Python 数据驱动ddt 使用

Posted 安柠筱洁

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 数据驱动ddt 使用相关的知识,希望对你有一定的参考价值。

准备工作: 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 使用的主要内容,如果未能解决你的问题,请参考以下文章

python-ddt模块使用

python接口自动化测试 - 数据驱动DDT模块的简单使用

Python+unittest+DDT实现的数据驱动测试

Python 之数据驱动工具:DDT

selenium3+python3——数据驱动(DDT)

selenium3+python3——数据驱动(DDT)