第八种:通过自定义参数指定不同游览器测试
1.在项目中通常需要对不同游览器进行兼容性测试故在对代码进行解耦使其可以根据命令行指定执行游览器一.添加自定义参数1.因为pytest中无browser参数故需要添加自定义参数2.pytest框架要添加自定义参数需要在 conftest.py 模块中(也只能在此模块中)实现钩子函数pytest_addoption3.修改test_cases文件夹下conftest.py文件新增内容defpytest_addoption(parser):# 定义pytest的参数parser.addoption(--browser,defaultchrome)# 坑 参数都是--小写4.官方网址https://docs.pytest.org/en/latest/reference/reference.html#pytest.hookspec.pytest_addoption二.设置游览器驱动路径1.在根目录下新建drivers文件夹用来存放游览器驱动建议附上驱动对应版本信息2.在配置文件setting.py中添加游览器驱动位置# 浏览器驱动BROWSER_DRIVERS{chrome:os.path.join(BASE_DIR,drivers,chromedriver_90.exe),edge:os.path.join(BASE_DIR,drivers,msedgedriver_90.exe)}三.在夹具中接收参数1.pytest框架在执行用例前会把所有的参数封装到一个对象中使用内置夹具 pytestconfig 可以获取对应的参数2.所以自定义夹具只需要使用 pytestconfig 即可3.通过自定义--browser 参数来指定运行测试的浏览器定义打开浏览器的夹具重写driver方法在test_cases文件夹下conftest.py文件新增内容pytest.fixture(scopeclass)defdriver(pytestconfig):ifpytestconfig.getoption(--browser)edge:withwebdriver.Edge(executable_pathsettings.BROWSER_DRIVERS[edge])aswd:wd.maximize_window()yieldwdelifpytestconfig.getoption(--browser)chrome:withwebdriver.Edge(executable_pathsettings.BROWSER_DRIVERS[chrome])aswd:wd.maximize_window()yieldwd四.修改main.py函数1.修改main.py代码可接受命令行--browser参数修改后代码importpytestimportsettingsfromcommon.toolsimportget_optsif__name____main__:# pytest.main([-s,-v,-m success,--alluredir./reports, settings.TEST_CASE_DIR])# 定义传入的参数信息args[-s,-v,--alluredir./reports,settings.TEST_CASE_DIR]# 获取命令行-m参数的值argget_opts(-m)# 若-m参数不为空则将参数和参数值传入参数信息中ifarg:args.insert(0,-m {}.format(arg))argget_opts(--browser)ifarg:args.insert(0,--browser{}.format(arg))# 坑这里只能写keyvalue的形式不要用空格# 运行代码并生成测试报告pytest.main(args)五.运行1.在命令行中指定标记和游览器运行python main.py-msuccess and login--browser edge