pytest参数化用例

pytest可以使用@pytest.mark.parametrize对用例进行参数化
parametrize()方法:

def parametrize(self,argnams,argvalues,indirect=False,ids=None)

主要参数:

  • argnams 参数名,是一个字符串,若有多个参数中间用逗号分隔
  • argvalue 参数值,是一个列表,列表中有几个元素,便会生成几个用例
  • indirect 默认为False,若为True则表示参数名是一个函数
  • ids 可以将用例重命名

1、一个参数的情况:

@pytest.mark.parametrize("param",[1,2,3,4])
def test_demo1(param):
    print(f"传入的参数为:{param}")

运行结果:
image.png

2、多个参数的情况:

@pytest.mark.parametrize("param1,param2,param3",[(1,1,1),(0.1,0.2,0.3),(-1,-2,-3)])
def test_demo2(param1,param2,param3):
    print(f"传入的第一个参数为:{param1}")
    print(f"传入的第二个参数为:{param2}")
    print(f"传入的第参个参数为:{param3}")

运行结果:
image.png

3、用例重命名

@pytest.mark.parametrize("param",[1,2,3,4],ids=["用例一","用例二","用例三","用例四"])
def test_demo1(param):
    print(f"传入的参数为:{param}")

运行结果:
image.png

4、参数驱动

当数据量比较大的时候,我们可以将测试数据单独存在放一个文件中,如yaml、json、excel等,通过读取文件数据的方式,将参数传入测试用例中,这一操作可以称为数据驱动。

下面我们将测试数据存放在yaml文件中
image.png

测试用例:
@pytest.mark.parametrize("add1,add2,sum", yaml.safe_load(open("./test_yaml.yaml")))
def test_demo3(add1, add2, sum):
    print(f"传入加数为:{add1, add2}")
    print(f"传入和为:{sum}")
    assert sum == add1 + add2

运行结果:
image.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容