ddt(data driven test)数据驱动测试
由外部数据集合来驱动测试用例
核心思想:数据和测试代码分离
应用场景:一组数据来执行相同的操作
安装cmd:pip install ddt
1、一组数据中,每个数据为单个值
用法:在测试类前标记ddt,在单个测试用例前标记data、unpack、file_data
import ddt
import unittest
@ddt.ddt
class test_ddt(unittest.TestCase):
#1):一组数据中,每个数据为单个值
@ddt.data(1,2,3,4,5)
def test_print(self,a):
print(a)
运行结果:
2、对传入的数据分解用unpack,不加unpack说明是两组数据
@ddt.ddt
class test_ddt(unittest.TestCase):
@ddt.data([1,2,3],[10,11,12])
def test_add(self,a):
print(a)
#print(a[0]+a[1]+a[2])
#运行结果
Ran 2 tests in 0.001s
OK
[1, 2, 3]
[10, 11, 12]
ok
6
33
@ddt.ddt class test_ddt(unittest.TestCase): @ddt.data([1,2,3],[10,11,12]) @ddt.unpack #对[1,2]分解数据,有多少个值传对应参数,data数据的值数据要对应 def test_add(self,a,b,c): print(a+b+c)
#运行结果OK
6
33
3、从变量(一组数据)当中取值,(表达式:*变量名)
listA = [1,2,3,4,5]
@ddt.ddt
class test_ddt(unittest.TestCase):
# 2):一组数据中,每个数据为一个列表或一个字典
# 从变量(一组数据)当中取值--变量是字典/列表(表达式:*变量名)
@ddt.data(*listA)
def test_a(self,a):
print(a)
#运行结果
OK
1
2
3
4
5
4、从文件读取数据file_data
#前提:Mydict.json数据为:{"name":"jiao","sex":"female","age":"18"}
@ddt.ddt
class test_ddt(unittest.TestCase):
# 3):文件对象:json、yaml
# 变量是字典:键将用作测试用例名称的后缀,而值将作为测试数据提供。
# 列表中的每个值将对应于一个测试用例,并且该值将连接到测试方法名称。
@ddt.file_data("D:\PyCharm\project\python\Mydict.json")
def test_readData_fromJsonFile(self,a):
print("从文件读取")
print(a)
#运行结果
从文件读取
jiao
从文件读取
female
从文件读取
18