Как сделать очистку ресурсов после выхода из теста в pytest

Python Middle Без компании
Как сделать очистку ресурсов после выхода из теста в pytest
Ответы
Для очистки ресурсов в pytest можно использовать фикстуры с `yield` или `addfinalizer`. **1. Фикстура с `yield`:** ``` import pytest @pytest.fixture def resource(): res = initialize_resource() # Инициализация ресурса yield res # Передача ресурса в тест cleanup_resource(res) # Очистка после теста ``` **2. Фикстура с `addfinalizer`:** ``` import pytest @pytest.fixture def resource(request): res = initialize_resource() request.addfinalizer(lambda: cleanup_resource(res)) return res ``` **Разница:** - `yield` удобнее для простых случаев. - `addfinalizer` позволяет добавлять несколько финализаторов и работает даже если `setup` упал. **Пример с контекстным менеджером:** ``` @pytest.fixture def temp_file(): with open("temp.txt", "w") as f: yield f # Файл закроется автоматически после теста ```