代码改变世界

pytest.mark.parametrize 传参

2024-06-19 15:45  HQS_blog  阅读(3)  评论(0编辑  收藏  举报

pytest.mark.parametrize 是pytest用来参数化测试的一个装饰器,它允许你为测试函数或测试类提供多组参数list, 这样就可以使用每组参数执行测试函数或测试类,实现参数化驱动,接收的是元组集

1.pytest.mark.parametrize 可接收三个参数,常用的有两个,第一个是函数中需要引用的参数名,第二个是参数值,会自动解析参数值并赋值到参数名上,按顺序将最小的迭代单元赋值到参数上

   参数名:传字符串类型,字符串中可以定义一个或者多个参数名,用逗号分隔开

   参数值:可迭代的对象,比如列表、元组、集合等等, 注意:参数值可以使用变量,但是不能传装饰器

 

 

示例1:

test_datas =[

{"input1": 1, "input2": 2, "expected": 3},
{"input1": 2, "input2": 3, "expected": 5},
{"input1": 3, "input2": 4, "expected": 7}
]

@pytest.mark.parametrize("data", test_datas)
data = {"input1": 1, "input2": 2, "expected": 3}
data = {"input1": 2, "input2": 3, "expected": 5}
data = {"input1": 3, "input2": 4, "expected": 7}


示例2:

test_datas =[(1, 2, 3), (2, 3, 4), (3, 4, 5)]

@pytest.mark.parametrize("data01, data02, data03", test_datas)
data01=1, data02=2, data03=3
data01=2, data02=3, data03=4
data01=3, data02=4, data03=5

还有一个参数是ids

   ids:这个是可选参数,标记每一组数据,在测试输出中展示,如图