t.me/atinfo_chat Telegram группа по автоматизации тестирования

Jenkins и pytest игнорирует модульную фикстуру

Теги: #<Tag:0x00007f7487a07a78> #<Tag:0x00007f7487a07758> #<Tag:0x00007f7487a072d0>

Короче такая вот беда.
Жили были тесты на pytest 3 и pytest bdd, и как то там работали.
Начал тут обновлять env библиотеки, и попал на нехорошее поведение, суть в чем.
В модуле где определены pytest_bdd слова указана фикстура для сохранения контекста между тестами (вобще хочется отдельно поблагодарить людей которые писали сей сраный инструмент)

@pytest.fuxture(scope='module')
def ctx():
   return {}

на локальных машинах, все работает отлично, с --setup-trace я вижу что она вызывается один раз, и сохраняет свое состояние на протяжении жизни модуля - никаких в общем то вопросов.
Но вот в CI Jenkins происходят чудеса: эта же фикстура ведет себя как будто она со scope=‘function’, и соотвествтенно вызывается на каждый тест, теряя при этом всю необходимую информацию.
Сам Jenkins обычный контейнер с linux python3, в jobs которого на sh вешается дефолтный run тестов.

sh """#!/bin/bash
    set -euo pipefail
    echo "**************************************************"
    CONFIG_FILE=${parameters.config_file}
    export CONFIG_FILE
    echo "Running test suite : ${suiteName}"
    py.test ${parameters.pytest_args} ${parameters.execution_directory} --alluredir ${parameters.allure_report_directory} --config ${parameters.config_file} -k ${suiteName}
    echo "**************************************************"
"""

Возможно кто-то сталкивался с таким поведением и подскажет куда копать. Заранее спасибо.

Может прозвучит грубовато, но копать надо в сторону изоляции окружения, ибо фикстура передающая данные между тестами - дно :smile:
Попробуйте перед запуском pytest сделать cd в директорию с тестами, т.к. дефолтно пайтест ведет поиск ini/conftest/root от pwd, если мне не изменяет память