Я пытаюсь определить данные инициализации для нескольких тестовых сценариев, которые проверяют одну конечную точку api. Я хочу сделать это так, чтобы мне не приходилось создавать кодовый табличный код для нескольких итераций теста, где только данные различаются. Кажется, я не могу окунуться в голову, как это сделать, используя встроенные фитинги для pytest. Вот в основном то, что я пытаюсь сделать:Как получить динамические данные pytest динамически
В тестах/conftext.py:
import pytest
@pytest.fixture(scope="module")
def data_for_a():
return "a_data"
@pytest.fixture(scope="module")
def data_for_b():
return "b_data"
В тестах/tests.py
import pytest
# this works
def test_a(data_for_a):
assert "a_data" == data_for_a
# but I want to do this and it fails:
scenarios = [
{ "name": "a", "data": data_for_a },
{ "name": "b", "data": data_for_b },
]
for scenario in scenarios:
print(scenario.name, scenario.data)
# desired output:
# "a a_data"
# "b b_data"
я получаю NameError: name 'data_for_a' is not defined
исключение. Я пробовал различные подходы, чтобы заставить это работать, но, похоже, нет способа передать прибор в качестве параметра к методу тестирования - так что либо определите кучу тестовых тестов, либо куча операторов if/else в одном тесте и передать каждое устройство в явном виде. Мне не нравится любой из этих вариантов. На данный момент мне кажется, что я должен просто создать свой собственный вспомогательный модуль, чтобы использовать эти тестовые данные, но я предпочел бы использовать встроенный механизм для этого. Есть какой-либо способ сделать это?
Спасибо, что ответили. Я только что закончил создание вспомогательного модуля. – lps