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()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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)