• 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))
  • 相关阅读:
    go笔记 (异或交换两个数字变量需要注意的问题)
    java子线程中获取父线程的threadLocal中的值
    关于java线程池的线程废弃与存活条件分析
    .net实现上传图片到共享目录(远程服务器)
    .net 获取两个时间段中间的日期
    ASP .NET数据写入oracle数据库
    MySql定时插入数据
    Sitecore8.2 .net Solr搜索实现
    .net 盘古分词
    json_3层格式_数据源DataSet
  • 原文地址:https://www.cnblogs.com/MLing/p/16012403.html
Copyright © 2020-2023  润新知