Мне нужно создать автоматические тесты для нескольких связанных приложений, и я столкнулся с одной проблемой, связанной с управлением данными тестов между тестами.Проблема в том, что одни и те же данные должны совместно использоваться несколькими приложениями и / или разными API.Теперь у меня есть следующая структура с pytest, которая работает хорошо для меня, но я сомневаюсь, что использование управления тестовыми данными в conftest.py является правильным подходом:
Общая структура выглядит так:
tests/
conftest.py
app1/
conftest.py
test_1.py
test_2.py
app2/
conftest.py
test_1.py
test_2.py
test_data/
test_data_shared.py
test_data_app1.py
test_data_app2.py
Вотпример тестовых данных в tests / conftest.py:
from test_data.test_data_shared import test_data_generator, default_data
@pytest.fixture
def random_email():
email = test_data_generator.generate_random_email()
yield email
delete_user_by_email(email)
@pytest.fixture()
def sign_up_api_test_data(environment, random_email):
"""
environment is also fixture, capture value from pytest options
"""
data = {"email": random_email, "other_data": default_data.get_required_data(), "hash": test_data_generator.generate_hash(environment)}
yield data
do_some_things_with_data(data)
Очень удобно использовать прибор для этих целей, потому что постусловия, области видимости и другие приятные вещи (обратите внимание, что приложения имеют много логики и взаимосвязи,поэтому я не могу просто жестко закодировать данные или перенести их, например, в файл json). Подобные вещи можно найти в tests / app1 / conftest.py и tests / app2 / conftest.py для данных, которые используются в app1 и app 2 соответственно.
Итак, вот две проблемы: 1. conftest.py стать монстром с большим количеством кода 2. как я знаю, использование conftest для тестовых данных - плохой подход или я ошибаюсь?
Заранее спасибо!