码迷,mamicode.com
首页 > 编程语言 > 详细

Python 数据驱动ddt 使用

时间:2018-03-30 14:13:29      阅读:507      评论:0      收藏:0      [点我收藏+]

标签:脚本   imp   过程   准备   生成   实例   提高   testcase   逻辑   

准备工作: pip install ddt

 

知识点:

 

一,数据驱动和代码驱动:

 

数据驱动的意思是  根据你提供的数据来测试的  比如 ATP框架 需要excel里面的测试用例

 

代码驱动是必须得写代码 它才能测试 比如说unittest 

 

二,使用数据驱动框架的意义:
- 代码复用率高。同一测试逻辑编写一次,可以被多条测试数据复用,提高了测试代码的复用率,同时可以提高测试脚本的编写效率。
- 异常排查效率高。测试框架依据测试数据,每条数据生成一条测试用例,用例执行过程相互隔离,在其中一条失败的情况下,不会影响其他的测试用例。

 

-代码的可维护性高。清晰的测试框架,利于其他测试工程师阅读,提高了代码的可维护性。

 

tips : 参数少的用yml挺好  参数多的,用json xx.json 格式  这种上下有依赖关系的 就写py文件  

 

文件名.json的话是json文件里面要写json串

 

yml每个接口都是独立运行的  

 

 DDT 使用

DDT包含类的装饰器ddt和两个方法装饰器data(直接输入测试数据),file_data(可以从json或者yaml中获取测试数据)

只有yaml和yml结尾的文件以yaml形式上传,其他情况下默认为json

通常情况下,data中的数据按照一个参数传递给测试用例,如果data中含有多个数据,以元组,列表,字典等数据,需要自行在脚本中对数据进行分解或者使用unpack分解数据

@data(a,b)

那么a和b各运行一次用例

@data([a,b],[c,d])

如果没有unpack,那么[a,b]当成一个参数传入用例运行

如果有unpack,那么[a,b]被分解开,按照用例中的两个参数传递

@file_data(filename)

对于json的文件,每一个json元素按照一个用例运行,可以依照python分解元组,列表或者字典的方式分解传入

实例:

import ddt
import unittest
# print(dir(ddt))

@ddt.ddt
class MyCase(unittest.TestCase):
@ddt.data(1,2) #运行2次
def testa(self,value):
print(value)

@ddt.data([1,2]) #运行1次
def testb(self,value):
print(value)

@ddt.data([1,2],[3,4]) #不加unpack 会报错
def testc(self,a,b):
self.assertNotEqual(a,b)

@ddt.data([1,2],[3,4]) #运行2次
@ddt.unpack
def testd(self,a,b):
self.assertNotEqual(a,b)

if __name__ == ‘__main__‘:
unittest.main()

Python 数据驱动ddt 使用

标签:脚本   imp   过程   准备   生成   实例   提高   testcase   逻辑   

原文地址:https://www.cnblogs.com/chendai21/p/8671380.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!