Добавление параметров интерфейса командной строки pytest
Pytest имеет возможность добавлять параметры интерфейса командной строки во время вызова, чтобы повысить гибкость вашего текста (кода). Если вы когда-либо использовали расширение pytest, вы наверняка видели это в действии. В этом быстром примере я покажу вам, как добавить опцию CLI для переключения pytest-selenium в безголовый режим для работы в конвейере CI / CD. При написании тестов локально мне нравится, чтобы тесты запускались в браузере, чтобы я мог выявлять любые потенциальные проблемы, однако в сборке CI / CD вы захотите запускать их без головы. Для простоты в этом примере мы просто будем использовать драйвер Chrome в Selenium.
Сначала нам нужно настроить опцию CLI. В conftest.py
просто реализовать pytest_addopts
функцию , которая принимает аргумент parser
. Интерфейс parser.addoption
такой же, как у argparse.ArgumentParser.add_argument
( docs ).
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
.