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"])

 

posted @ 2018-07-16 22:54  乐观的小孩  阅读(625)  评论(0编辑  收藏  举报