做网站客户不给钱怎么办,分享影视资源的网站怎么做,网站设计基本结构,苏州免费网页制作模板文章目录 1.前言2.单参数3.多参数4.字典形式5.parametrize 结合 ids 参数 1.前言
在 pytest 中#xff0c;parametrize 是一个非常实用的装饰器#xff0c;它允许你对测试函数进行参数化#xff0c;即使用不同的参数组合多次运行同一个测试函数#xff0c;从而更高效地进行… 文章目录 1.前言2.单参数3.多参数4.字典形式5.parametrize 结合 ids 参数 1.前言
在 pytest 中parametrize 是一个非常实用的装饰器它允许你对测试函数进行参数化即使用不同的参数组合多次运行同一个测试函数从而更高效地进行测试覆盖。
基本语法
pytest.mark.parametrize(argnames, argvalues)argnames这是一个字符串表示要传入测试函数的参数名。如果有多个参数参数名之间用逗号分隔。argvalues这是一个可迭代对象如列表、元组等其中每个元素代表一组参数值。如果 argnames 中有多个参数名那么 argvalues 中的每个元素应该是一个包含对应数量值的元组。
2.单参数
以下是一个简单的单参数单次循环的案例
import pytestpytest.mark.parametrize(key,[value])
def test_parametrize01(key):print(key)运行结果 除此之外我们还是进行多次循环。
pytest.mark.parametrize(char,String)
def test_parametrize02(char):print(char)这里的可迭代对象是一个字符串那么会将字符串每一个字符都赋值给参数 运行结果 除了使用字符串可以用列表
pytest.mark.parametrize(type,[int,boolean,double])
def test_parametrize03(type):print(type)运行结果
3.多参数
除了单参数外还可以使用多参数 示例
pytest.mark.parametrize(a, b, expected, [(1, 2, 3), (4, 5, 9), (0, 0, 0)])
def test_parametrize04(a, b, expected):result a bassert result expected可迭代对象的类型是列表里面的值是用的元组 运行结果 可以使用多个 pytest.mark.parametrize 装饰器来组合不同的参数化维度。 示例
pytest.mark.parametrize(x,[1,2])
pytest.mark.parametrize(y,[3,4])
def test_parametrize05(x,y):print(fx {x},y {y})运行结果
4.字典形式
字典形式的可迭代参数也很简单 示例
pytest.mark.parametrize(student,[{name:zhangsan,age:18}])
def test_parametrize06(student):print(f学生的姓名: {student[name]},年龄{student[age]})运行结果
5.parametrize 结合 ids 参数
parametrize 装饰器还支持 ids 参数用于为每组参数值指定一个自定义的标识这样在测试报告中可以更清晰地看到每个测试用例使用的是哪组参数。
pytest.mark.parametrize(a, b, expected, [(1, 2, 3), (4, 5, 9), (0, 0, 0)],ids[test_case_1, test_case_2, test_case_3])
def test_parametrize07(a, b, expected):result a bassert result expected运行结果 在测试结果中每组参数对应的测试用例会显示为 test_parametrize07[test_case_1]、test_addition[test_case_2] 和 test_addition[test_case_3]方便区分和查看。