[Заметка] Интеграция Robot Framework с TestLink

Проблема.

Вопрос интергации Robot Framework и TestLink поднимался в списке рассылки не раз, но никто, почему-то, не сделал механизм интеграции, рекомендуемый Pekka Klarck (руководитель группы разработки Robot Framework) - через listener.

Я предлагаю свой вариант интеграции, состоящий из двух файлов:

  1. Библиотека TestlinkAPIClient.py

robot-framework-library/TestlinkAPIClient.py at master · dmizverev/robot-framework-library · GitHub

  1. Listener
    TestLinkListener.py

robot-framework-library/TestLinkListener.py at master · dmizverev/robot-framework-library · GitHub

Решение

Интергация Robot Framework и Testlink является односторонней: Robot Framework → TestLink.

Осуществляется при помощи listener TestLinkListener.py. Данный listener использует python API Testlink, которое реализовано в библиотеке TestlinkAPIClient.py.

Описание библиотеки TestlinkAPIClient.py

В этой библиотеке созданы базовые кейворды для работы с TestLink. Использовано XML API TestLink.

Например, при помощи

  • reportTCResult можно отправить результаты тесты в TestLink,
  • createTestCase - создать тест кейс в TestLink,
  • и др.

Полную документацию к библиотеке вы можете прочитать тут: link

Описание работы TestLinkListener.py.

Данный listener реализует метод end_test , в котором вызывается функция reportTCResult. Эта функция проставляет в TestLink’e для каждого выполненного теста статус выполнения (pass или fail) и сообщение об ошибке в тесте.

Связь между тестами Robot Framework и TestLink осуществляется через тег Robot Framework “testlinkid=”, в котором прописывается ID теста в TestLink. Интеграция работает для последнего билда из тестплана TestLink.

Входные параметры TestLinkListener.py

  1. URI Testlink;
  2. developer key TestLink;
  3. ID тестплана в TestLink.

Для запуска тестов RobotFramework с TestLinkListener.py необходимо выполнить следующие шаги:

  1. Убедиться, что в переменной окружения %PYTHONPATH% прописаны пути к TestlinkAPIClient.py и TestLinkListener.py.

  2. Если необходим лог выполнения действий listener, то следует установить переменную окружения %ROBOT_SYSLOG_FILE%.

  3. В каждом тест-кейсе RF должен присутствовать тег с ID теста в TestLink
    Пример:

    [Tags] testlinkid=TEST-40
    
  4. В TestLink данные тесты-кейсы должны быть добавлены в соответствующий тестплан. Все автотесты должны принадлежать одному тестплану.

  5. Пример bat-файла для запуска тестового набора:

    set ROBOT_SYSLOG_FILE=C:\RobotFramework\output\syslog.txt
    pybot.bat --loglevel DEBUG --outputdir C:\RobotFramework\output --listener TestLinkListener.py:mytestlinkserver.com:7wd82a73019f1341gf076d4ab946bb918:40650 C:\RobotFramework\tests\Demo\testlink_demo\testsuite.txt
    

Замечание.

Почему стоило разделять библиотеку и listener?

  1. На основе библиотеки можно создать много разных listener под разные задачи и нюансы
  2. Потому что разработчики TestLink в скором времени грозятся изменить API с XML на JSON. В этом случае нам не надо переписывать каждый listener, а только одну библиотеку.
  3. Бывают исключительно неудобно организованные тесты в TestLink, когда listener не помогает при интеграции. В этом случае код интеграции можно реализовать прямо в тесте, используя библиотеку.
    Правда, я считаю это плохой практикой и не рекомендую у себя на работе так делать.
3 Likes