Sobes.tech
Назад к вопросам
Senior
11

Что такое фикстура в pytest? Как реализуешь teardown?

Компании, где спрашивали
Tangem

Ответ от нейросети

sobes.tech AI

В pytest фикстура — это функция, которая предоставляет подготовленные данные или окружение для тестов. Она позволяет избежать дублирования кода и управлять настройкой и очисткой ресурсов.

Для реализации teardown (очистки после теста) в фикстуре используется конструкция с оператором yield:

import pytest

@pytest.fixture
def resource():
    # setup
    res = acquire_resource()
    yield res
    # teardown
    release_resource(res)

Когда тест использует эту фикстуру, код до yield выполняется перед тестом, а код после yield — после завершения теста, даже если тест упал с ошибкой.

Также можно использовать request.addfinalizer для регистрации функции очистки, но yield считается более удобным и читаемым способом.