在进行 UI 自动化测试时想同时引入 ddt 和 pytest 的 conftest.py,其中 conftest.py 定义 driver,在 test_方法中引入 ddt 的 file_data。其中测试方法 test_的参数包含 driver,testdata(如用户名密码)
ddt 模块要求 file_data 与 test_* 方法的形参保持一致,但是形参中多了 driver,造成不一致的问题,无法运行自动化测试
在使用了 conftest.py 定义 driver 的情况下,如何使用 ddt 引入测试数据呢?
@pytest.fixture()
def driver():
global driver
# 在DriverConf中定义了driver的一些配置,此处直接引用
driver = DriverConf().driver_conf()
yield driver
driver.quit()
@file_data("../testdata/login.yml")
def test_login(self, driver, username, password, expect):
"""
登录验证
:param driver: 浏览器驱动
:param username: 用户名
:param password: 密码
:param expect: 预期结果
:return:
"""
# with allure.step("登录"):
driver = eval(driver)
LoginPage().login(driver, username, password)
pytest.assume(LoginPage().is_success(driver, expect))
add_img_2_report(driver, "登录")
driver 是直接引用 conftest.py 中的定义,yml 文件中设置了用户名、密码、预期结果。