Встречается на собеседованиях • сегодня

Как сделать очистку ресурсов после выхода из теста в 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  # Файл закроется автоматически после теста
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы