Sobes.tech
Back to questions
Junior — Middle
77

Какими способами в pytest осуществляют освобождение ресурсов после завершения теста?

Companies where asked
Леста

Answer from AI

sobes.tech AI

В pytest освобождение ресурсов после теста обычно реализуется с помощью фикстур с использованием ключевого слова yield или функции request.addfinalizer.

  1. Фикстуры с yield: Код до yield выполняется перед тестом, а код после — после теста, для очистки ресурсов.
import pytest

@pytest.fixture
def resource():
    # подготовка ресурса
    res = open('file.txt', 'w')
    yield res
    # освобождение ресурса
    res.close()
  1. addfinalizer: Можно зарегистрировать функцию очистки, которая выполнится после теста.
@pytest.fixture
def resource(request):
    res = open('file.txt', 'w')
    def cleanup():
        res.close()
    request.addfinalizer(cleanup)
    return res

Таким образом, pytest предоставляет удобные механизмы для гарантированного освобождения ресурсов после выполнения тестов.