Unittest + DDT

2020-05-03  本文已影响0人  桑鱼nicoo
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 文件就可以。这里就不再赘述了。

上一篇下一篇

猜你喜欢

热点阅读