Как запустить код очистки только для определенных тестов с pytest? - PullRequest
2 голосов
/ 12 июля 2019

В pytest есть способ запустить код очистки только для определенной тестовой функции / метода. Я знаю, что мы можем сделать это для запуска каждой тестовой функции. Но здесь я хочу разместить некоторую логику очистки, специфичную для одной тестовой функции.

Я могу просто добавить код очистки в конце теста. Но если тест не пройден, очистка не будет выполнена.

1 Ответ

1 голос
/ 12 июля 2019

Создайте прибор с вашим кодом очистки и внедрите его только в один тест, используя прибор в качестве аргумента для вашего теста или явно пометив тест с помощью декоратора pytest.mark.usefixtures.

import pytest

@pytest.fixture
def my_cleanup_fixture():
    # Startup code
    ...
    yield
    # Cleanup code
    ...

@pytest.mark.usefixtures('my_cleanup_fixture')
def test_with_special_cleanup():
    pass

my_cleanup_fixture имеет область действия function по умолчанию, поэтому код запуска и очистки будет выполняться для каждой введенной функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...