Проблема.
Вопрос интергации Robot Framework и TestLink поднимался в списке рассылки не раз, но никто, почему-то, не сделал механизм интеграции, рекомендуемый Pekka Klarck (руководитель группы разработки Robot Framework) - через listener.
Я предлагаю свой вариант интеграции, состоящий из двух файлов:
- Библиотека TestlinkAPIClient.py
robot-framework-library/TestlinkAPIClient.py at master · dmizverev/robot-framework-library · GitHub
- 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
- URI Testlink;
- developer key TestLink;
- ID тестплана в TestLink.
Для запуска тестов RobotFramework с TestLinkListener.py необходимо выполнить следующие шаги:
-
Убедиться, что в переменной окружения
%PYTHONPATH%
прописаны пути к TestlinkAPIClient.py и TestLinkListener.py. -
Если необходим лог выполнения действий listener, то следует установить переменную окружения %ROBOT_SYSLOG_FILE%.
-
В каждом тест-кейсе RF должен присутствовать тег с ID теста в TestLink
Пример:[Tags] testlinkid=TEST-40
-
В TestLink данные тесты-кейсы должны быть добавлены в соответствующий тестплан. Все автотесты должны принадлежать одному тестплану.
-
Пример 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?
- На основе библиотеки можно создать много разных listener под разные задачи и нюансы
- Потому что разработчики TestLink в скором времени грозятся изменить API с XML на JSON. В этом случае нам не надо переписывать каждый listener, а только одну библиотеку.
- Бывают исключительно неудобно организованные тесты в TestLink, когда listener не помогает при интеграции. В этом случае код интеграции можно реализовать прямо в тесте, используя библиотеку.
Правда, я считаю это плохой практикой и не рекомендую у себя на работе так делать.