Как пропускать шаги в pytest, на основе статуса багов в Jira?
Есть ситуация, имеем множество тест кейсов, в которых есть шаги, если на определенном шаге обнаруживается баг, то мы заносим его в Jira и затем обвешиваем шаг декораторами (ставим ссылку на баг и skip). И получается так, что тестеру теперь нужно мониторить статус всех багов, и затем вручную убирать декораторы с падающего шага. Возникла идея автоматизировать этот процесс, сделать скрипт, который будет мониторить статус задач с багами в Jira, и в зависимости от статуса, будет пропускать или исполнять шаг. Предполагается сделать базу, в которую тестеры будут добавлять id бага в Jira, номер падающего шага, и на каждом запуске тестов. Как можно в pyteste реализовать такое поведение? куда вообще копать, какие есть фичи у pytest, которые смогут помочь в реализации данной идеи?
ну в целом можно запилить сервис, который сходит на джиру и проверит статус тикета, и вернет true/false который можно будет использовать в skipif
но размечать тесты все равно придется в ручную.
Nart, если у вас есть более узкое место где идет проверка, то можно там заглушку влипить, но так же в ручном режиме.
Можно разметить тесты более модульно и выключать из проверок целый модуль.
Можно заюзать какой-нибудь тест кейс менеджер и ставить линки там. и запускать тесты на основе его.
Можно упороться обучить машинку исключать тесты из выборки на основе открытых багов, но эт совсем не просто и не дешево
В общем разобрался сам. В pytest-е в файле с настройками conftest.py можно объявить такую функцию, которая сразу после запуска тестов собирает все шаги в модуле, и дальше с ними можно проводить уже свои манипуляции. И при этом никакими декораторами шаги обвешивать не надо. А связать все это с джирой, думаю уже дело техники.
def pytest_collection_modifyitems(items):
skip_mark = pytest.mark.skip()
for item in items:
if <keyword> in item.function.func_name:
item.add_marker(skip_mark)