数据驱动将数据和代码分离,能够帮助我们高效的管理测试数据,在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次,每次测试一组数据。
原文:https://www.cnblogs.com/suanmiaoup/p/12375054.html