unittest根据测试数据动态生成test_case

在以往的基于unittest测试框架中,测试用例是人为开发的以.py的脚本形式存在的,对应文件中的测试数据;但是在测试平台中,测试用例数据是存储在数据库中,

譬如你有10组数据,那么得到10个test case,用纯手工的方式写那么多个test_成员函数在测试平台中是不现实的,这样也就失去了平台的意义。

我们的思路是:

1.开发一个继承unittest的测试demo类(TestCase),类中有一个demo测试用例。

2.利用setattr来自动为已有的TestCase类添加成员函数。

3.为了使这个方法凑效,需要用类的static method来生成decorate类的成员函数,并使该函数返回一个test函数对象出去。

4.在某个地方注册这个添加test成员函数的调用(只需要在实际执行前就可以,可以放在模块中自动执行亦可以手动调用)

class Test(unittest.TestCase):
 
    def setUp(self):
        print("start")
 
    def demo(self, request_data):
        #测试用例demo
        #一些测试步骤
 
    @staticmethod
    def getTestFunc(data):
        def func(self):
            self.demo(data)
        return func
 
    def tearDown(self):
        print("end")
 
 
# 根据测试数据动态添加测试函数
def __generate_testcases(data_list):
    for fun in dir(Test):
        if 'test_case_' in fun:
            delattr(Test, fun)
    for data in data_list:
        setattr(Test, "test_case_%s" % (data["case_name"]), Test.getTestFunc(data))
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值