Pytest fixtures — это переиспользуемые компоненты, которые управляют логикой инициализации и очистки тестов. Они помогают держать тесты чистыми и избегать дублирования кода, централизуя общие ресурсы или данные.
@pytest.fixtureДекоратор @pytest.fixture помечает функцию как fixture. Любая тестовая функция может затем запросить этот fixture, просто включив его как параметр в сигнатуру тестовой функции — pytest автоматически его внедрит.
@pytest.fixture
def sample_data():
return [1, 2, 3]
def test_sum(sample_data):
assert sum(sample_data) == 6
yieldFixtures также поддерживают логику очистки через yield. Код перед yield выполняется как setup, а код после — как teardown:
@pytest.fixture
def db_connection():
conn = create_connection() # Setup
yield conn
conn.close() # Teardown
Параметр scope определяет, как часто fixture создаётся и уничтожается:
"function" — по умолчанию, запускается один раз на тест"class" — общий для всех тестов в классе"module" — общий для всех тестов в модуле"session" — общий для всей тестовой сессии@pytest.fixture(scope="module")
def shared_resource():
return expensive_setup()
Pytest fixtures запрашиваются тестовыми функциями через параметры в сигнатуре функции, и pytest автоматически внедряет их без необходимости явных вызовов функций.
Новый — ещё не проверен сообществом
Вы