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)

 

运行结果:

 

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值