DDT是Data Driver Testing的简称,在接口自动化测试中为什么要用到DDT这个模块呢?比如说一个接口的测试用例有很多,这些测试用例只不过是传参值不同, 其他的都相同,那我们有必要每条用例都去调用这个接口吗,这样代码看起来确实是有点冗余的意思,所以这个时候我们就需要用到DDT这个模块, 可极大的提高代码的效率。
以下为传递类型:
import unittest
from ddt import *
from UnnitestCase.myfunc import login
@ddt# 声明此方法使用ddt提供的数据驱动方法
class Test001(unittest.TestCase):
#@data(1,2,3)# 传递整数型数据
#@data("aaa", "bbb", "ccc") # 传递字符型数据
#@data((1, 2, 3), (4, 5, 6), (7, 8, 9)) # 传递元组数据
#yuanzu = ((1, 2, 3), (4, 5, 6), (7, 8, 9))
#@data(*yuanzu)元组数据通过变量接收通过【*变量名】传递
#liebiao = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
#@data(*liebiao) # 传递列表变量数据
#@file_data(r"D:/testjson")json数据
@data([1, 2, 3], [4, 5, 6], [7, 8, 9]) # 传递列表数据
def test_login01(self,a):
print(a)
unpack的使用:
当传递的是复杂的数据结构时使用。比如使用元组或者列表,添加 @unpack 之后, ddt 会自动把元组或者列表对应到多个参数上。字典也可以这样处理
当没有加unpack时,方法的参数只能传递一个
当你加了unpack时,传递的数据量需要一致;列表中有几个参数就要传递几个参数否则会报错
当传的数据是字典类型时,要注意每个字典的key都要一致,函数的参数的命名也要一致;下面具体演示下unpack的使用
import unittest
from ddt import *
from UnnitestCase.myfunc import login
@ddt# 声明此方法使用ddt提供的数据驱动方法
class Test001(unittest.TestCase):
#@data((1, 2, 3), (7, 8, 9))
#@unpack元祖数据使用unpack
#@data([1, 2, 3], [7, 8, 9])
#@unpack列表
@data({"a": "张三", "b": 18,'c':'test'}, {"a": "李四", "b": 28,'c':'test'})#字典
@unpack
def test_login02(self,a,b,c):
print(a,b,c)
本篇文章是看着知乎一位大佬做的练习,但找不到路径,如有看到请留言告知