Pytest имеет возможность добавлять параметры CLI во время вызова, чтобы добавить больше гибкости в ваш набор тестов. Если вы когда-либо использовали расширение pytest, вы, вероятно, видели это в действии. В этом кратком примере я покажу вам, как добавить опцию CLI для переключения pytest-selenium в безголовый режим для работы в конвейере CI/CD. При написании тестов локально мне нравится, чтобы тесты запускались в браузере, чтобы я мог уловить любые потенциальные проблемы, однако в сборке CI/CD вы захотите запустить их без головы. Для простоты мы просто будем использовать Chromedriver в 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 вы делаете это, реализуя fixture 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
. Дайте мне знать, если есть какие-либо другие быстрые лакомые кусочки, которые были бы полезны или более глубокий пример того, что может предложить pytest
.