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()