unittest动态生成测试用例

1.动态生成测试类及方法

class MakeTestCases:
    testcases = None
​
    def __init__(self):
        # 从文件中读取测试用例
        self.testcases = yaml_read(FilePath.TESTSUITE)
​
    def make_test_func(self, case):
        def func(*args, **kwargs):
            """
            测试方法,传入测试步骤,构建测试步骤
            """            
            pass
        return func
​
    def make_test_class(self, *args, **kwargs):        
        # 自动创建测试类,并继承unittest.TestCase
        return type("TestContact", (unittest.TestCase,), {})        
​
    def make(self):   
        #获取动态类
        test_class = self.make_test_class()   
        #用来保存所有测试方法
        tests = []
        for case in self.testcases:            
            test_func = self.make_test_func(case['steps'])
            test_name = "test_%s" % case['test_name']
            #动态生成测试方法
            setattr(test_class, test_name, test_func)
            # 测试方法保存到此变量,添加到testsuite
            tests.append(test_class(test_name))        
        return test_class
    #可以通过多种方法添加
     #  return tests   

2.main.py中组织运行用例

import unittest
from test.make_testcases import MakeTestCases
​
if __name__ == '__main__':
    # 构建用例
    cases = MakeTestCases().make()
    
    testsuite = unittest.TestSuite()
    # 将用例加载至testsuite内
    testsuite.addTests(unittest.TestLoader().loadTestsFromTestCase(cases))
    # 此方法适合 make()返回列表的方式
    #testsuite.addTests(cases)
    # 创建unittest runner
    runner = unittest.TextTestRunner(verbosity=2)
    # 运行测试
    runner.run(testsuite)

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值