ddt数据驱动介绍和使用【多测师】

复制代码
一 ddt基础知识
(数据驱动测试)允许您通过使用不同的测试数据运行一个测试用例,并使其显示为多个测试用例。

参考文档:https://ddt.readthedocs.io/en/latest/

1.  ddt
类装饰器,用于TestCase的子类test方法。

2. 1  data
方法装饰器(数据),包含与要提供给测试的值一样多的参数。

2. 2  file_data
方法装饰器(数据),将从JSON或YAML文件加载测试数据。
只有以“.yml”和“.yaml”结尾的文件才会作为YAML文件加载。所有其他文件都作为JSON文件加载。

3. unpack
额外的装饰器,自动将元组和列表解压缩为多个参数,并将字典解压缩为多个关键字参数。
复制代码
复制代码
二 ddt在自动化测试中的运用
(1)单个参数(data)

import unittest
from ddt import ddt,data,unpack

#需要测试的代码
def add(a):
    return (a+1)

#设置值
data1=[{'a':1,'b':2},{'a':1,'b':2},{'a':1,'b':2},{'a':1,'b':2}]

#使用ddt对被测试代码进行批量测试
@ddt
class TestDDT(unittest.TestCase):

    @data(*data1)
    def test_add(self,data1):
        res=add(data1["a"])
        assert res==data1["b"]

if __name__=='__main__':
    unittest.main()
复制代码
复制代码
(2)多个参数(data)
import unittest
from ddt import ddt,data,unpack

def add2(a,b):
    return (a+b)

data2=[[{'a':1,'b':1},2],[{'a':1,'b':2},3]]

@ddt
class TestDDT(unittest.TestCase):

    @data(*data2)
    @unpack
    def test_add2(self, x,y):
        res = add2(x["a"],x["b"])
        print(res)
        assert res == y


if __name__=='__main__':
    unittest.main()
复制代码
复制代码
(3)测试文件(file_data.json)
test_data.json

{
  "test1":{"a":1,"b":1},
  "test2":{"a":2,"b":2}
}

testcase.py 
import unittest
from ddt import ddt,file_data

def add(a,b):
    return a+b

@ddt
class TestCase(unittest.TestCase):

    @file_data('test_data.json')
    def test_add1(self,a,b):
        r=add(a,b)
        print(r)

if __name__=='__main__':
    unittest.main()
复制代码

 

posted @   多测师_树哥  阅读(725)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示