Вопрос проверяет умение использовать фикстуры для подготовки тестового окружения и повторного использования кода в тестах.
Фикстуры в pytest — это функции, которые подготавливают и возвращают данные или объекты для тестов. Их определяют с декоратором @pytest.fixture, а затем передают в тест через аргумент функции. Можно настраивать область видимости (scope) и параметризовать.
Создание фикстуры:
import pytest
@pytest.fixture
def db_connection():
conn = create_connection()
yield conn
conn.close()Область видимости scope:
function (по умолчанию) — для каждого теста.
module — одна фикстура на модуль.
session — одна фикстура на весь запуск.
@pytest.fixture(scope="module")
def temp_dir(tmp_path_factory):
return tmp_path_factory.mktemp("data")Параметризация:
Позволяет запускать одну фикстуру с разными значениями.
@pytest.fixture(params=[1, 2, 3])
def number(request):
return request.paramАвтоматическое применение (autouse):
Фикстура выполнится для всех тестов без явного указания.
@pytest.fixture(autouse=True)
def enable_feature_flag():
setup_flag(True)Когда использовать:
Подготовка окружения (базы, файлы).
Общие данные для нескольких тестов.
Удобство чтения и поддержки.