Python接口自动化之ddt学习笔记
DDT:
ddt:(data driven test)数据驱动测试
由外部数据集合来驱动测试用例
核心的思想:数据和测试代码分离
应用场景:一组数据来执行相同的操作
当测试数据发生大量的变化的情况下测试代码(或者说测试用例)可以保持不变
--------------------
Python ddt框架:
安装:pip install ddt
---------------------
使用之前先导入ddt
import ddt
ddt结合单元测试使用。
1,在测试类定义之前使用:@ddt.ddt
2,在测试用例定义之前使用:@ddt.data(测试数据),测试数据之间用逗号隔开
3,在2的基础上定义测试用例时,参数接收2中的测试数据
例:
@ddt.ddt
class DemoTest(unittest.TestCase):
@ddt.ddt(2,3,4)
def test_print(self,a):
print("简单调用@data查看输出的值是什么?",a)
---------------------------
ddt-data
一组数据之间用逗号隔开。
data的参数可以分为以下几种:
1,一组数据中,每个数据为单个值
2,一组数据中,每个数据为一个列表或者一个字典
3,文件对象:json,yaml(这个基本上很少用)
一组数据中书数据为列表或者字典:
@data([a,b],[c,d])
如何从以上数据中获取到列表中的每一项的值
@unpack
若变量A=[{A:B,C:D},{E:F,G:H}]
如何将变量A中的每一组元素作为测试数据?
@data(*A)
----------------
思考:如何用excel来结合ddt
#_author: liu.cao #date: 2018/7/14 import unittest import ddt A=[1,2,3,4,5] B=[{"name":"xiaohai","sex":"male"},{"name":"xiaoming","sex":"female"}] C=[[2,3],[10,11],[12,13]] @ddt.ddt#ddt是一个装饰器 class DdtTT(unittest.TestCase): @ddt.data(*C) @ddt.unpack#单独取C中[2,3]两个值 def test_ddt1(self,a,b): print(a,b) print(a+b) @ddt.data({"name":"xiaohai","sex":"male"}) @ddt.data(*A) @ddt.data(*B) def test_ddt0(self,a):#a可以任意命名,接收值,可以看做一个占位符 print(a["sex"])