背景:
在做 2.0 核心接口测试的时候, 针对一个接口, 如: 客户信息查询 在测试数据的 Excel 中假如填入了三行数据, 如何根据
Excel 中有多少行的数据去动态的定义多少个 test 函数.
解决方案:
1. 由于 python 的 unittest 中默认设置是: 测试类中的函数, 以 test 开头的会被执行, 其他的不被执行, 所以先定义一个测试函数, 注意取名不能以 test 开头
比如上图, 只有 my_2700 这么一个函数作为测试函数, 这个传入的 x 是指作为测试数据的 Excel 中的某一行 (如传入的是 3, 就是针对测试数据 Excel 中的第三行, 依次读取第三行中的数据, 然后发送请求), 然后根据下图, 定义一个 get_test 函数, 用来执行 my_2700 函数, 最后的关键在于 __test_demo() 函数
setattr 第一个参数传入这个类名, 第二个参数可以用来重命名这个函数, 第三个参数就是来实例化的函数, 这里的 i 的值为测试数据 Excel 的行数, 然后每一行生成一个 test 打头的函数名, 这样子就完成了本篇文章一开头的需求, 实现了根据 Excel 的数据量, 动态定义用来执行 unittest 的的函数.
关于 setattr 不懂的可以自己百度熟悉.
来源: http://www.bubuko.com/infodetail-2940130.html