运行pytest文件时遇报错:无法识别--browser chrome参数
解决pytest无法识别--browser自定义参数的问题
错误信息
ERROR: usage: pytest [options] [file_or_dir] [file_or_dir] [...]
pytest: error: unrecognized arguments: --browser chrome
inifile: None
rootdir: C:\Users\Prabhakar\PycharmProjects\nopecommerceApp
你的代码
import pytest from selenium import webdriver @pytest.fixture() def setUp(browser): global driver if browser == 'chrome': driver = webdriver.Chrome() print("***** Launching chrome browser ******") elif browser == 'firefox': driver = webdriver.Firefox() print("***** Launching Firefox browser ******") return driver def pytest_addoption(parser): parser.addoption('--browser') @pytest.fixture() def browser(request): return request.config.getoption('--browser')
问题原因
你把pytest的钩子函数pytest_addoption写在了普通测试文件里,pytest只会自动加载项目根目录下的conftest.py文件中的钩子函数,所以无法识别你定义的--browser参数。
解决步骤
- 在项目根目录(即错误信息里的
rootdir路径)创建一个conftest.py文件 - 将以下代码单独放到
conftest.py中:
import pytest def pytest_addoption(parser): # 加上help提示,方便后续使用 parser.addoption('--browser', help="指定浏览器类型:chrome 或 firefox") @pytest.fixture() def browser(request): return request.config.getoption('--browser')
- 原测试文件中只保留
setUpfixture和测试相关代码即可:
import pytest from selenium import webdriver @pytest.fixture() def setUp(browser): global driver if browser == 'chrome': driver = webdriver.Chrome() print("***** Launching chrome browser ******") elif browser == 'firefox': driver = webdriver.Firefox() print("***** Launching Firefox browser ******") return driver
- 重新运行pytest命令,比如:
pytest --browser chrome
额外优化
如果希望不指定--browser参数时默认使用chrome,可以修改conftest.py中的pytest_addoption,添加default参数:
parser.addoption('--browser', default='chrome', help="指定浏览器类型:chrome 或 firefox")
内容的提问来源于stack exchange,提问作者The Entertainment
相关产品推荐
相关产品推荐

