Как известно, основной проблемой в тестировании является отчетность по прогонам. Некоторые компании собирают данные в отдельном хранилище. Вместо того, чтобы вручную организовывать хранение, было решено сохранять их в Test IT. Такие данные как: исход, время выполнения и количество автоматизированных кейсов позволяют разделить тесты на выборки и дать оценку покрытия автотестами. Это практично, поскольку в Test IT всё сделали до нас и не придется заново изобретать велосипед. Объединив Test IT и pytest мы сможем выборочно запускать авто тесты. В итоге должна получиться мастер система, из которой будут запускаться тестовые выборки и собираться статистика. Несмотря на то, что существует множество СУТ (Allure TestOps, TestLink и т.п.), решили остановится на Test IT, поскольку это быстро растущий проект по доступной цене с поддержкой на русском языке, а лицензия на TestRail уже закончилась. В рамках задачи следует: В Test IT существует два вида кейсов: ручной и автоматизированный  Для того чтобы в прогоне появилась кнопка Launch Autotests автоматизированный кейс должны быть создан и привязан к ручному  В таком случае напротив ручного кейса появится символ ракеты  Создание и связывание автоматизированного кейса происходит через endpoint AutoTests, в который следует передать два параметра: Для запуска GitLab CI агента через Test IT следует создать WebHook со следующими параметрами:  Параметры для GitLab CI: Параметры для запуска PYTEST: TEST_IT_MODE принимает следующие значения: Эти параметры будут переданы в GitLab CI и сохранены в переменных окружения агента  Тесты получают значения из переменных окружения агента при помощи модуля getenv Класс TestItParams следует сохранить в объекте session Для создания автоматизированного кейса во время запуска pytest, нам нужно достать два параметра testit_case_title и testit_case_id. Эти параметры можно получить из pytest_collection_modifyitems, поскольку он вызывается во время составления списка на запуск. Для этого напишем plugin в файле conftest.py Функции create_autotest_in_project и link_autotests_to_testcases это обычные API запросы через endpoint AutoTests. Параметр test_it_mode используется для разделения задач: создание, привязка, удаление или запуск.  При создании тестового плана возникает потребность в запуске только выбранных автоматизированных кейсов. Поскольку pytest ничего не знает о тестовом плане, то он должен запрашивать его самостоятельно. Для этого по значению параметра TEST_RUN_ID через endpoint TestRunes мы получаем список тестов в текущем прогоне.  Далее выбираем только те тесты, которые есть в прогоне и удаляем остальные.  Фильтрация происходит в объекте session.items в момент составления списка на запуск. Каждый автоматизированный кейс должен получать результат прохождения в режиме реального времени а не постфактум. Для возвращения статуса в реальном времени нам следует воспользоваться хуком pytest_runtest_makereport с декоратором @pytest.hookimpl(hookwrapper=True).  Он позволяет перехватывать выполнение ОДНОГО теста ДО и ПОСЛЕ прохождения. Этот хук возвращает объект outcome, в котором содержится информация о прогоне текущего теста.  Передача результатов прогона в Test IT происходит через endpoint TestRunes. Объединив Test IT и pytest мы собрали мастер систему которая умеет:  Test IT имеет красивый интерфейс, предоставляющий кольцевые-диаграммы, различные таблицы и графики. Можно узнать, в каком прогоне упал конкретный тест и сколько времени он выполнялся.