Добавление параметров интерфейса командной строки pytest

Pytest имеет возможность добавлять параметры интерфейса командной строки во время вызова, чтобы повысить гибкость вашего текста (кода). Если вы когда-либо использовали расширение pytest, вы наверняка видели это в действии. В этом быстром примере я покажу вам, как добавить опцию CLI для переключения pytest-selenium в безголовый режим для работы в конвейере CI / CD. При написании тестов локально мне нравится, чтобы тесты запускались в браузере, чтобы я мог выявлять любые потенциальные проблемы, однако в сборке CI / CD вы захотите запускать их без головы. Для простоты в этом примере мы просто будем использовать драйвер Chrome в Selenium.

Сначала нам нужно настроить опцию CLI. В conftest.py просто реализовать pytest_addopts функцию , которая принимает аргумент parser. Интерфейс parser.addoption такой же, как у argparse.ArgumentParser.add_argumentdocs ).

def pytest_addopts(parser):
    parser.addoption(
    	"--headless",
        action="store_true",
        help="Run driver in headless mode."
  )

Используя действие, store_true мы установим, --headless что он True присутствует, и по умолчанию, False когда он не предоставлен.

Следующей частью будет использование значения CLI в параметрах драйвера. Для Chrome вы делаете это, реализуя приспособление chrome_options следующим образом.

@pytest.fixture()
def chrome_options(request, chrome_options):
  if not request.config.getoption("--headless"):
    	chrome_options.add_argument("--window-size=2560,1440")
        # any other config values to be ran when not headless
    else:
    	chrome_options.add_argument("--headless")
        chrome_options.add_argument("--window-size=2560,1440")
        # any other config values to be ran when headless
    return chrome_options

Чтобы запустить тест (код) без головы, просто запустите его pytest --driver chrome --headless или просто опустите в браузере, --headless и все будет хорошо.

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

Ответить