我们设计测试用例时,会出现测试步骤一样,只是其中的测试数据有变化的情况,比如测试登录时的账号密码。这个时候,如果我们依然使用一条case一个方法的话,会出现大量的代码冗余,而且效率也会大大降低。此时,ddt模块就能帮助我们解决这个问题。
ddt(data-driven test),顾名思义,数据驱动测试。这个模块是第三方库,需要我们自己下载。或者直接在命令行输入pip install ddt。
ddt用法
先看一个简单的演示:
import unittest
import ddt
@ddt.ddt # 解析Demo中使用了ddt装饰器的方法
class Demo(unittest.TestCase):
@ddt.data(1, 2) # 迭代的参数值
def test_case_1(self, v): # 迭代的参数个数需要与方法中的形参个数一致
print(f"v:{v}")
@ddt.data((1, 2), [3, 4]) # 迭代的参数值类型可以为元组或列表
@ddt.unpack # 当迭代的参数为多维数组时,需要使用该装饰器来解析参数
def test_case_2(self, v1, v2):
print(f"v1:{v1} v2:{v2}")
@ddt.data({"v3": 1, "v4": 2}, {"v3": 3, "v4": 4}) # 迭代的参数值类型可以为字典,字典的key值需要与形参的名称一致
@ddt.unpack
def test_case_3(self, v3, v4):
print(f"v3:{v3} v4:{v4}")
if __name__ == '__main__':
unittest.main()
演示结果:

文章介绍了ddt模块如何解决测试用例中因数据变化导致的代码冗余问题,提供了ddt的使用示例,包括数据驱动测试的基本用法。同时,文章指出了ddt的缺陷——自动修改方法名称导致的问题,以及如何通过自定义用例名称来修复这一问题。此外,还展示了如何在用例描述中参数化显示数据。
最低0.47元/天 解锁文章
657

被折叠的 条评论
为什么被折叠?



