关于ddt数据驱动,做到这几步就够了

数据驱动将数据和代码分离,能够帮助我们高效的管理测试数据,在unittest框架中如何使用数据驱动呢?需要用到第三方模块ddt。

假设有一个现成的接口is_number,它的功能是判断传入的参数是否为正数,首先设计测试用例,然后根据测试用例,整理出测试数据如下:

datas = [
  {'id': 1, 'title': '输入正整数', 'data': 8, 'expect': True},
  {'id': 1, 'title': '输入大于0的浮点数', 'data': 1.9, 'expect': True},
  {'id': 1, 'title': '输入0', 'data': 0, 'expect': True},
  {'id': 1, 'title': '输入负数', 'data': -2, 'expect': False},
  {'id': 1, 'title': '输入非数字', 'data': 'abc', 'expect': False}
]

有了数据和接口,就可以实现数据驱动功能了,步骤如下:

首先安装ddt: pip install ddt 

新建测试文件test.py,引入unittest、ddt和接口:

import is_num
import ddt
import unittest

创建测试类和方法,并引入数据驱动:

@ddt.ddt
class TestNumber(unittest.TestCase):
    @ddt.data(*datas)
    def test_is_number(self, data):
        num = data['data']
        expect = data['expect']
        res = is_number(num)
        self.assertEqual(res, expect)

虽然我们只写了一个测试方法,但是在执行时ddt.data()会把datas列表进行拆包处理,每一组数据都会通过data传入test_is_number,所以test_is_number一共会执行5次,每次测试一组数据。

猜你喜欢

转载自www.cnblogs.com/suanmiaoup/p/12375054.html