前言
在学习pytest的参数化过程中,遇到了一个问题,执行pytest命令时出现错误,In test_parmaids: 4 parameter sets specified, with different number of ids: 3
源代码
@pytest.fixture()
def login3(request):
param = request.param
print(f"login name:{param['username']},login pwd:{param['pwd']}")
return {'code':0,'msg':'success'}
data3 = [
{"username":"username1","pwd":"pwd1"},
{"username":"username2","pwd":"pwd2"},
{"username":"username3","pwd":"pwd3"},
{"username":"username4","pwd":"pwd4"}
]
ids = [
"登录的用户名是username1 密码是pwd1",
"登录的用户名是username2 密码是pwd2",
"登录的用户名是username3 密码是pwd3",
"登录的用户名是username4 密码是pwd4"
]
@allure.story("登录功能3")
@pytest.mark.parametrize('login3',data3, ids = ids, indirect=True)
def test_parmaids(login3):
'''
登录功能 - 测试用例3
'''
assert login3['code'] == 0
错误原因
我的data中的测试数据是4条,但是在ids中的字符串只有三个,少写了一个,导致的这个错误。
写在最后
我在解决这个问题的时候,发现不同的代码错误都会导致这个error,所以这个错误原因大家可以参考一下。