标签:级别 scn ams 传递 width 方案 讲解 eterm 装饰器
pytest允许在多个级别启用测试参数化:
def parametrize(self,argnames, argvalues, indirect=False, ids=None, scope=None):
源码解析:a comma-separated string denoting one or more argument names, or a list/tuple of argument strings.
含义:参数名字
格式:字符串"arg1,arg2,arg3"【需要用逗号分隔】
备注:源码中写了可以是参数字符串的list或者tuple,但博主实操过是不行的,不知道是不是写的有问题
@pytest.mark.parametrize(["name", "pwd"], [("yy1", "123"), ("yy2", "123")]) # 错的
@pytest.mark.parametrize(("name", "pwd"), [("yy1", "123"), ("yy2", "123")]) # 错的
@pytest.mark.parametrize("name,pwd", [("yy1", "123"), ("yy2", "123")])
源码解析:
含义:参数值列表
格式:必须是列表,如:[ val1,val2,val3 ]
如果只有一个参数,里面则是值的列表如:@pytest.mark.parametrize("username", ["yy", "yy2", "yy3"])
如果有多个参数例,则需要用元组来存放值,一个元组对应一组参数的值,如:@pytest.mark.parametrize("name,pwd", [("yy1", "123"), ("yy2", "123"), ("yy3", "123")])
备注:虽然源码说需要list包含tuple,但我试了下,tuple包含list,list包含list也是可以的........
当装饰器 @pytest.mark.parametrize 装饰测试类时,会将数据集合传递给类的所有测试用例方法
# 笛卡尔积,组合数据
data_1 = [1, 2, 3]
data_2 = [‘a‘, ‘b‘]
@pytest.mark.parametrize(‘a‘, data_1)
@pytest.mark.parametrize(‘b‘, data_2)
def test_parametrize_1(a, b):
print(f‘笛卡尔积 测试数据为 : {a},{b}‘)
标签:级别 scn ams 传递 width 方案 讲解 eterm 装饰器
原文地址:https://www.cnblogs.com/wwtest/p/14368653.html