Senior
Mi az a fixture a pytest-ben? Hogyan valósítod meg a teardown-t?
sobes.tech MI
Válasz az MI-től
В pytest фикстура — это функция, которая предоставляет подготовленные данные или окружение для тестов. Она позволяет избежать дублирования кода и управлять настройкой и очисткой ресурсов.
Для реализации teardown (очистки после теста) в фикстуре используется конструкция с оператором yield:
import pytest
@pytest.fixture
def resource():
# setup
res = acquire_resource()
yield res
# teardown
release_resource(res)
Когда тест использует эту фикстуру, код до yield выполняется перед тестом, а код после yield — после завершения теста, даже если тест упал с ошибкой.
Также можно использовать request.addfinalizer для регистрации функции очистки, но yield считается более удобным и читаемым способом.