У меня есть рабочая среда pytest для тестирования селена. Я использую параметризованный прибор в conftest.py, который позволяет мне тестировать все различные браузеры, не переписывая тест. Я хотел бы передать аргумент командной строки для моего сценария, чтобы я мог запустить его только в определенном браузере, а не во всех из них. Для этого мне нужно будет изменить переменные, переданные в мое устройство. До сих пор я не мог понять, как это сделать. Мой пример ниже не работает, скорее всего, потому, что pytest разборчиво анализирует файл conftest.py из переменной, которую описывает сценарий запуска.py.test conftest - Изменить параметры прибора На основе sys.argv
#conftest.py
browsers = { "ff" : webdriver.Firefox, "ie" : webdriver.Ie }
@pytest.yield_fixture(params=browsers.keys())
def browser(request):
driver = browsers[request.param]()
yield driver
driver.quit()
#test_simple.py
def test_simple(browser):
browser.get("http://stackoverflow.com")
#main.py
browsers = {}
if __name__ == "__main__":
if len(sys.argv) > 1:
for arg in sys.argv[1:]:
if arg == "-ff":
browsers = { "ff" : webdriver.Firefox }
elif arg == "-ie":
browsers = { "ie" : webdriver.Ie }
elif arg == "-all":
browsers = { "ff" : webdriver.Firefox, "ie" : webdriver.Ie }
pytest.main()
Как я могу передать значения параметризованном арматуре в conftest.py?
Я прочитал документы и реализовал некоторые из примеров, но я не смог заставить его работать правильно. Проблема в том, что мне нужно передать ключи словаря моими браузерами на устройство браузера, но нет очевидного способа проверить параметр командной строки и обновить словарь браузеров, чтобы соответствующие ключи были доступны для прибора до фактические прогоны браузеров. – user4794170
Выглядит хорошо. Благодаря! – user4794170