Sobes.tech
Back to questions
Senior
15

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

Companies where asked
Tangem

Answer from AI

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 считается более удобным и читаемым способом.