Рубрики
Без рубрики

Быстрый совет: Добавление параметров pytest CLI

Краткое введение к добавлению аргументов CLI в набор тестов pytest в контексте pytest-selenium.

Автор оригинала: Adam Mertz.

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 .