1 安装 DDT
$ pip3 install ddt
2 @data 装饰器
2.1 按照一个参数传递给测试用例
import unittest
from ddt import ddt, data, unpack
@ddt
class DataDrivenDDT(unittest.TestCase):
@data('Alibaba')
def test_data(self, testdata):
print(testdata)
if __name__ == '__main__':
unittest.main()
2.2 @data(a,b) ,data里面的参数按顺序传入到用例参数中每个参数执行一次
import unittest
from ddt import ddt, data, unpack
@ddt
class DataDrivenDDT(unittest.TestCase):
@data('Alibaba', 'Tencent')
def test_data(self, testdata):
print(testdata)
if __name__ == '__main__':
unittest.main()
2.3 data中含有多个数据,以元组,列表,字典等数据
import unittest
from ddt import ddt, data, unpack
@ddt
class DataDrivenDDT(unittest.TestCase):
@data(['Alibaba', 'Tencent'])
def test_data(self, testdata, a):
print(testdata, a)
if __name__ == '__main__':
unittest.main()
3 @unpack 装饰器
data 包含数组等,使用 @unpack 分解数据
import unittest
from ddt import ddt, data, unpack
@ddt
class DataDrivenDDT(unittest.TestCase):
@data(['Alibaba', 'Tencent', '1'], ['Alibaba1', 'Tencent1', '2'])
@unpack
def test_data(self, testdataa, a, b):
print(testdataa, a, b)
if __name__ == '__main__':
unittest.main()
4 @file_data(filename) 装饰器
可以从json或者yaml中获取测试数据
先创建一个 data.yaml 文件
lis:
- Cat
- Dog
- Goldfish
lis1:
- Cat1
- Dog1
- Goldfish1
在测试用例中使用 data.yml 数据源
import unittest
from ddt import ddt, data, unpack, file_data
@file_data('data.yaml')
def test_yamldata(self, value):
print(value)
if __name__ == '__main__':
unittest.main()
引用 .json 格式的文件与 .yaml 相同,只是再使用时在 @file_data() 引用 json 文件就可以。这里就不再赘述了。