6-Python之DDT数据驱动测试

Python之DDT数据驱动测试

 

 

1、安装命令

cmd输入pip install ddt

2、DDT引用

DDT包含类的装饰器ddt(对应testcase子类)和两个方法装饰器data,unpack(直接输入测试数据,对应需要成倍增加的测试),用不同的测试数据运行一个测试用例,从而使它看起来像多个测试用例。

@data:包含的参数数量与要提供给测试的值的数量相同。
@file_data:将从JSON或YAML文件加载测试数据。

 

通常,数据中的每个值都将作为单个参数传递给测试方法。如果这些值是元组,则必须在测试中解包它们。或者,您可以使用一个附加的装饰器unpack,它将自动将元组和列表解包为多个参数,并将字典解包为多个关键字参数。
 

 

3、使用数据驱动框架的意义

- 代码复用率高。同一测试逻辑编写一次,可以被多条测试数据复用,提高了测试代码的复用率,同时可以提高测试脚本的编写效率。
- 异常排查效率高。测试框架依据测试数据,每条数据生成一条测试用例,用例执行过程相互隔离,在其中一条失败的情况下,不会影响其他的测试用例。
- 代码的可维护性高。清晰的测试框架,利于其他测试工程师阅读,提高了代码的可维护性。

 

4、示例

 

import unittest
import ddt
list = [{"name": "chen", "age": "25"}, {"name": "xiao", "age": 26}]


@ddt.ddt    # 在class类前使用
class MyTesting(unittest.TestCase):
    def setUp(self):
        print("this is setUp")

    @ddt.data(1, 2, [2, 3])  #
    def test_one(self, a):
        print(a)

    @ddt.data([5, 5], [3, 4], [5, 6])
    @ddt.unpack  # 拆开,非整体,列表的两个参数分别传给a和b
    def test_compare(self, a, b):
        print(a, b)
        # self.assertEqual(a, b)

    @ddt.data(*list)   # 用*引用
    @ddt.unpack        # 拆开,非整体
    def test_two(self, name, age):   # 参数必须和字典key相同
        print(name, age)

    def tearDown(self):
        print('this is tearDown')


if __name__ == '__main__':
    unittest.main(verbosity=2)

 

运行结果:

6-Python之DDT数据驱动测试_第1张图片

 

注意:测试用例的执行顺序是按照测试用例test_xxx中xxx的首字母ASCII码的顺序加载测试用例,数字与字母的顺序为:0-9,A-Z,a-z。所以以A开头的测试用例方法会优先执行,以a开头会后执行。

 

你可能感兴趣的:(Python自动化测试)