Выполните проверку работоспособности перед запуском тестов с pytest - PullRequest
0 голосов
/ 31 января 2019

Я хотел бы выполнить некоторую проверку работоспособности при запуске тестов с использованием pytest.Как правило, я хочу проверить, что некоторые исполняемые файлы доступны для тестов, и что параметры, предоставленные пользователем в командной строке, действительны.

Самым близким, что я нашел, было использование приспособления, такого как:

@pytest.fixture(scope="session", autouse=True)
def sanity_check(request):
  if not good:
     sys.exit(0)

Но это все еще запускает все тесты.Я бы хотел, чтобы скрипт не работал, прежде чем пытаться запустить тесты.

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Если вы хотите запустить проверку работоспособности перед всем сценарием тестирования, вы можете использовать файл conftest.py - https://docs.pytest.org/en/2.7.3/plugins.html?highlight=re

Просто добавьте свою функцию с той же областью действия и опцией autouse в conftest.py:

@pytest.fixture(scope="session", autouse=True)
def sanity_check(request):
  if not good:
     pytest.exit("Error message here")
0 голосов
/ 31 января 2019

Вам не нужно явно проверять параметры командной строки;это будет сделано анализатором arg, который при необходимости прервет выполнение на ранней стадии.Что касается проверки условий, вы не далеко от решения.Используйте

  • pytest.exit для немедленного прерывания
  • pytest.skip, чтобы пропустить все тесты
  • pytest.xfail для провала всех тестов (хотя это ожидаемый сбой, поэтому он не пометит все выполнение как проваленное)

Пример фиксации:

@pytest.fixture(scope='session', autouse=True)
def precondition():
    if not shutil.which('spam'):
        # immediate shutdown
        pytest.exit('Install spam before running this test suite.')
        # or skip each test
        # pytest.skip('Install spam before running this test suite.')
        # or make it an expected failure
        # pytest.xfail('Install spam before running this test suite.')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...