python参数化处理:使用参数化装饰器、解析列表、元祖、字典等数据
在pytest中,也可以使用参数化测试,即每组参数都独立执行一次测试。
使用的工具就是pytest.mark.parametrize(argnames,argvalues)。 注:argnames参数名称,argvalues参数值。
1 """ 2 在pytest中,也可以使用参数化测试,即每组参数都独立执行一次测试 3 使用的工具就是 pytest.mark.paramtrize(argnames,argvalues) 4 例如:username,password 5 1.用户名错误,密码正确 6 2.用户名正确,密码错误 7 3.用户名错误,密码错误 8 4.用户名正确,密码正确 9 这种情况下需要用参数化,只需要传参数 10 """ 11 12 import pytest 13 #列表 14 15 data = ['123','456'] 16 @pytest.mark.parametrize('pwd',data) #argnames参数名称需要和方法里面的名称做对应,data指的是参数值。argnames可以传多个参数,以逗号来分割。 17 def test1(pwd): 18 print(pwd) 19 20 #元祖 21 data2 = [(1,2,3,), 22 (4,5,6) 23 ] 24 @pytest.mark.parametrize('a,b,c',data2 ) 25 def test2(a,b,c): 26 print(a,b,c) 27 28 #字典 29 data3 = ({ 30 'user':'wangfuyan', 31 'pwd':'123456' 32 }, 33 { 34 'age':2, 35 'email':'tom@qq.com' 36 }) 37 @pytest.mark.parametrize('dic',data3) 38 def test3(dic): 39 print(dic) 40 41 data_1 = [ 42 pytest.param(1,2,3,id="(a+b):pass"), #id的值可以自定义,只要方便理解每个用例是干什么的即可 43 pytest.param(4,5,10,id="(a+b:fail") 44 ] 45 def add(a,b): 46 return a+b 47 class TestParametrize(object): 48 @pytest.mark.parametrize('a,b,expect',data_1 ) 49 def test_parametrize_1(self,a,b,expect): 50 assert add(a,b) == expect
1 import pytest 2 import math 3 4 #pytest参数化 5 @pytest.mark.parametrize( 6 "base,exponent,expeceted", #base,exponent,expected用于定义参数的名称 7 [(2,2,4), 8 (2,3,8), 9 (1,9,1), 10 (0,9,0)], 11 ids = ["case1","case2","case3","case4"] #ids参数默认为None,用于定义测试用例的名称 12 ) 13 def test_pow(base,exponent,expeceted): 14 assert math.pow(base,exponent) == expeceted #math模块的pow()方法用于计算x的y次方的值

浙公网安备 33010602011771号