参数化,就是将测试数据提取出来,与逻辑分离,通过参数传递不同的测试数据来驱动用例运行,又称为数据驱动测试(Data-Drive test,简写ddt)。
比如,有一组测试注册的测试用例,它们的测试流程相同,只是输入的测试数据不同,这种情况下,自动化测试就可以将数据与代码分离,只编写1个测试用例方法,以后增加测试用例或者修改测试用例,只需要修改数据,不需要修改测试逻辑。
pytest通过 @pytest.mark.parametrize()即可实现参数化(测试函数中必须有参数)
一、测试函数参数化
1、单个参数
@pytest.mark.parametrize()中接收2个参数,第1个参数用字符串的形式标记要传递给测试函数的参数名称,注意,名称与测试函数中的参数名称必须一致,第2个参数表示要传递的测试数据(通常以元祖或列表的形式)。
2、多个参数
多个参数,@pytest.mark.parametrize()中仍传入2个参数,第1个参数用一个字符串标识要传递的参数名称,字符串用英文,分割,注意,名称和数量必须和测试函数中的参数一致,第2个参数表示要传递的测试数据(通常以二维列表或原则表示)。
二、测试类参数化
测试类参数化,在类上面加@pytest.mark.parametrize()装饰器,实际上,也是对测试类中的方法进行参数化。可以传入单个参数或多个参数,类中的所有测试方法中的参数名称和个数(测试方法中必须使用参数),必须与@pytest.mark.parametrize()中标识的参数一致。