DDT与pytest.mark.parametrize参数化区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DDT与pytest.mark.parametrize参数化区别相关的知识,希望对你有一定的参考价值。
参考技术A 一、DDT解析参数ddt 是第三方模块,需安装, pip install ddt
DDT包含类的装饰器ddt和两个方法装饰器data(直接输入测试数据)
通常情况下,data中的数据按照一个参数传递给测试用例,如果data中含有多个数据,以元组,列表,字典等数据,需要自行在脚本中对数据进行分解或者使用unpack分解数据。
@data(a,b)
那么a和b各运行一次用例
@data([a,d],[c,d])
如果没有@unpack,那么[a,b]当成一个参数传入用例运行
如果有 @unpack ,那么[a,b]被分解开,按照用例中的两个参数传递
1、测试参数如下:
login_data=["para":"mobilephone":"18777770000","pwd":"123456","method":"get","msg":"登录成功",
"para": "mobilephone":"18777770000","pwd":"000000","method":"get","msg":"用户名或密码错误",
"para": "mobilephone":" ","pwd":"123456","method":"get","msg":"手机号不能为空"]
2、测试用例使用DDT解析参数:
from ddt import ddt,data
#装饰测试类
@ddt
class TestHttpRequest(unittest.TestCase):
#装饰测试用例
@data(*login_data)
def test_login_1(self,data):
res=HttpRequest(data['url'],data['param']).http_request(data['method'])
print("测试结果:0".format(res.json()))
执行3条用例
标记函数参数化(测试用例方法前加测试数据):@pytest.mark.parametrize("a,b,expected", testdata)
语法:
ep1 传入单个参数
@pytest.mark.parametrize('参数名',lists)
ep2 传入两个参数
('参数1','参数2',[(参数1_data[0],参数2_data[0]),(参数1_data[1],参数2_data[1])]
传三个或者更多也是这样传。list的每个元素都是一个元祖,元祖里的每个元素和按参数顺序一一对应。
以上是关于DDT与pytest.mark.parametrize参数化区别的主要内容,如果未能解决你的问题,请参考以下文章
DDT与pytest.mark.parametrize参数化区别