Использование pytest для настройки и разрыва - PullRequest
0 голосов
/ 10 апреля 2019

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

@pytest.fixture
def reset_env():
    env = copy.deepcopy(os.environ)
    yield None
    os.environ = env


def test_that_does_some_env_manipulation(reset_env):
    # do some tests

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

Есть ли способ указать, что тестовая функция использует приспособление setup / teardown без аргумента приспособления? Может быть, декоратор скажет, что тестовая функция использует определенный прибор?

Ответы [ 2 ]

1 голос
/ 11 апреля 2019

Благодаря комментарию hoefling выше

@pytest.mark.usefixtures('reset_env')
def test_that_does_some_env_manipulation():
    # do some tests
0 голосов
/ 13 апреля 2019

Вы можете использовать autouse=True в своем приборе.Autouse автоматически выполняет установку в начале области действия.В вашем коде:

@pytest.fixture(autouse=True)
def reset_env():
    env = copy.deepcopy(os.environ)
    yield None
    os.environ = env


def test_that_does_some_env_manipulation():
    # do some tests

Но вы должны быть осторожны с областью действия прибора, так как прибор будет срабатывать для каждой области.Если у вас есть все такие тесты в одном каталоге, вы можете сделать это в файле conftest каталога.В противном случае вы можете объявить прибор в тестовом файле.

Соответствующий справочный документ по Pytest

...