Python для продвинутых: ООП, типизация и тестированиеОткрытые материалыFixtures в pytest: подготовка данных и scope

Fixtures в pytest: подготовка данных и scope

Уроки курсаFixtures в pytest: подготовка данных и scope

Cleanup через yield

Код до yield создаёт ресурс, значение после yield получает тест, а блок после него выполняет очистку даже при падении проверки.

@pytest.fixture
def temp_record(repository):
    record = repository.create("draft")
    yield record
    repository.delete(record.id)

Критичную очистку можно дополнительно защитить try/finally. Для файлов чаще уже есть встроенная fixture tmp_path, для подмены окружения — monkeypatch.

Fixture может зависеть от другой fixture. Слишком глубокий неочевидный граф усложняет тест: если по имени параметра нельзя понять, что он создаёт, разбейте setup на более явные части.