Pytest系列(4)- 参数化parametrize的用法

什么是参数化

将测试数据组织起来,用不同的测试数据调用相同的测试方法,通常跟数据驱动配合使用

参数化的作用

一般来说,参数化的实际引用场景:

比如搜索功能,在做UI自动化的时候

  • 需要输入中文、英文、数字、特殊字符等等来进行查询

  • 以上这些用例,区别就在于输入的数据以及对应的交互情况,调用的都是同一个测试方法

  • 可以把输入和期望的结果进行参数化,以此节省代码量

参数化的方法

用例前加上装饰函数 @pytest.mark.parametrize()即可

@pytest.mark.parametrize('a,b,c',[[1,1,2],[100,200,300]])
def test2(a,b,c):
    assert c == a+b

运行结果如下:

可以看见,成功的生成了两条测试用例

🍍ATTENTION:

  • 要将变化的数据提取出来,作为参数传递进去

  • 参数字符串之间"arg1,arg2,arg3..."需要用逗号分隔

  • 多个参数,需要用字符串或者元组

ids的使用

parametrize中ids参数可以标识测试用例,增加可读性

举个栗子

@pytest.mark.parametrize('a,b,c',((1,1,2),[100,200,300]),ids=['int1','int2'])
def test2(a,b,c):
    assert c == a+b

运行结果中可以看见,用例前显示了我们自定义的ids

🍍ATTENTION:

  • ids的长度必须与测试数据列表的长度一致(有多少组测试数据就需要有多少个ids)
  • 可以理解为用例的id

多个装饰器

多个参数,按照笛卡尔积组合测试数据

举栗👇👇👇

@pytest.mark.parametrize('a',[1,2,3])
@pytest.mark.parametrize('b',[4,5,6])
def test3(a,b):
    print(f'测试数据为:{a},{b}')

运行结果如下

posted @ 2021-11-08 23:34  莫伊101  阅读(230)  评论(0)    收藏  举报