ddt数据驱动
1、ddt定义:全称data-driver tests ,数据驱动测试,可以实现不同数据运行同一个测试用例。
ddt本质是一个装饰器,一组数据一个场景
主要核心:把业务逻辑装成关键字,在调用关键字
2、为什么要使用ddt?
提高代码的复用率
例如:接口测试每个接口的传参不止一种情况,一般考虑正向场景,逆向场景等多种组合。
所以在测试接口时候通常会编写多条case,而这些case除了参数不同外,并没有其他区别。
3、ddt 的四种模式:
(1)@ddt 引入装饰器
(2)@data 导入数据
(3) @unpack 拆分数据
(4)@file_data 导入数据
4、安装ddt
pip install ddt
5、ddt实操:
案例1:读取元组的数据
import unittest
from ddt import ddt,unpack,data,file_data #导入ddt四个模式
@ddt #引入ddt装饰
class cms(unittest.TestCase): #定义一个类,继承unittest.testcase
@data(1,2,5,3,4,) #数据 (5条运行几次)
def test1(self,a): #a用来接收data数据
print(a)
if __name__ == '__main__':
unittest.main()
案例2:读取列表中的数据
import unittest
from ddt import ddt,unpack,data,file_data #导入ddt四个模式
@ddt #引入ddt装饰
class cms(unittest.TestCase): #定义一个类,继承unittest.testcase
# @data(1,2,5,3,4,) #数据 (5条运行几次)
@data([1,2,3])
def test1(self,a): #a用来接收data数据
print(a)
if __name__ == '__main__':
unittest.main()
案例3:读取列表中的字典
import unittest
from ddt import ddt,unpack,data,file_data #导入ddt四个模式
@ddt #引入ddt装饰
class cms(unittest.TestCase): #定义一个类,继承unittest.testcase
# @data(1,2,5,3,4,) #数据 (5条运行几次)
@data({'name':'zs','age':18})
def test1(self,a): #a用来接收data数据
print(a)
if __name__ == '__main__':
unittest.main()
案例4:unpark
import unittest
from ddt import ddt,unpack,data,file_data #导入ddt四个模式
@ddt #引入ddt装饰
class cms(unittest.TestCase): #定义一个类,继承unittest.testcase
# @data(1,2,5,3,4,) #数据 (5条运行几次)
@data({'name':'zs','age':18},{'name':'zs1','age':20})
@unpack
def test1(self,name,age): #a用来接收data数据
print(name,age)
if __name__ == '__main__':
unittest.main()
案例5:
import os
import unittest
from ddt import ddt,unpack,data,file_data #导入ddt四个模式
@ddt #引入ddt装饰
class cms(unittest.TestCase): #定义一个类,继承unittest.testcase
# @data(1,2,5,3,4,) #数据 (5条运行几次)
# @data({'name':'zs','age':18},{'name':'zs1','age':20})
# # @unpack
# def add(self,a,b):
# print(a+b)
@file_data(r'D:\untitled3\abc.json')
def test1(self,a,b): #a用来接收data数据
print(a,b)
if __name__ == '__main_':
unittest.main()