pytes快速入门(4)--数据驱动
pytest中数据驱动的实现:在测试用例上加@pytest.mark.parametrize,用于接收测试数据
具体实现方式:
1、单个参数
@pytest.mark.parametrize("参数名",列表数据),其中,
参数名:用来接收列表数据中的每一项数据,作为测试用例中的参数
列表数据:一组测试数据
注意:
测试方法中传入的参数名称必须与参数名相同
2、多个参数
@pytest.mark.parametrize("参数名1,参数名2,参数名3",列表数据)
注意:
(1)测试方法中传入的参数名称必须与参数名相同
(2)参数名的个数需与参数列表中每一项数据的个数相同
附录
1 import pytest 2 3 def add(*args): 4 sum = 0 5 for item in args: 6 sum += item 7 return sum 8 9 @pytest.mark.parametrize("a", [(1, 3, 4), (10, 35, 45), (22.22, 22.22, 44.44)]) 10 def test_add(a): 11 print(a) # a的取值分别为(1,3,4)、(10,35,45)、(22.22, 22.22, 44.44) 12 13 ''' 14 第一轮 a = 1 b = 3 c = 4 15 第二轮 a = 10 b = 35 c = 45 16 第三轮 a = 22.22 b = 22.22 c = 44.44 17 ''' 18 @pytest.mark.parametrize("a,b,c", [(1, 3, 4), (10, 35, 45), (22.22, 22.22, 44.44)]) 19 def test_add1(a,b,c): 20 assert c == add(a,b)
测试结果
补充说明: 【了解即可】
除了上述的单参数和多参数,还可以进行参数的组合,即多组参数,依次组合。
1 @pytest.mark.parametrize("x", [0, 1]) 2 @pytest.mark.parametrize("y", [2, 3]) 3 def test_add(x, y): 4 pass
此时对应的测试用例共有4个,分别为0,2/0,3/1,2/1,3
-- 类似于数据库中的笛卡尔乘积。