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