DDT :ddt是第三方库,ddt+unittest来进行数据的处理
四种模式:第一步引入的装饰器@ddt;导入数据的@data;拆分数据的@unpack;导入外部数据的@file_data
一:
@data(a,b)
那么a和b各运行一次用例
@data([a,b],[c,d])
如果没有unpack,那么[a,b],[c,d]当成一个参数传入用例运行
如果有unpack,那么[a,b],[c,d]被分解开,按照用例中的两个参数传递
二:
要注意参数不对等的情况,提供对应参数的个数来接收变量
三:不定长参数的一个知识点:不定长参数的遍历
def print_msg(*args):
print(args)
t=[1,4]
print(t)
#运行结果是[1, 4]
print(*t)
#运行结果是1 4
#这个是不定长参数的遍历,也叫脱外套
在没有接触DDT之前,测试用例的编写如下,但是缺点是不能传递参数,所以可以商用ddt:
import unittest
class TestMath(unittest.TestCase):
def test_add(self):#缺点是:这个方法不能传递参数
a=10
b=20
print(a+b)
只使用data
传入一个参数
from ddt import ddt,data,unpack
import unittest
@ddt#它的作用的装饰测试类
class TestMath(unittest.TestCase):
#下面的1, 2, 3代表我们传入的参数, 每次传入一个值
@data(1,2,3)#装饰测试方法,拿到几个用例就执行几条用例
# 定义一个value用于接收我们传入的参数
def test_print_data(self,item):
print("item:",item)
if __name__ == '__main__':
unittest.main(verbosity=2)
传入两个参数
from ddt import ddt,data,unpack
import unittest
@ddt
class TestMath(unittest.TestCase):
@data((1,2),(2,3))
def test_print_data(self,a):
print("a", a)
if __name__ == '__main__':
unittest.main(verbosity=2)