1 安裝 DDT
$ pip3 install ddt
2 @data 裝飾器
2.1 按照一個(gè)參數(shù)傳遞給測(cè)試用例
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里面的參數(shù)按順序傳入到用例參數(shù)中每個(gè)參數(shù)執(zhí)行一次
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中含有多個(gè)數(shù)據(jù),以元組,列表,字典等數(shù)據(jù)
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 包含數(shù)組等,使用 @unpack 分解數(shù)據(jù)
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中獲取測(cè)試數(shù)據(jù)
先創(chuàng)建一個(gè) data.yaml 文件
lis:
- Cat
- Dog
- Goldfish
lis1:
- Cat1
- Dog1
- Goldfish1
在測(cè)試用例中使用 data.yml 數(shù)據(jù)源
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 相同,只是再使用時(shí)在 @file_data() 引用 json 文件就可以。這里就不再贅述了。