| 
                         以下是对 unittest.TestCase 类的扩展,使其支持参数化把参数加进去。下面是具体的代码实现过程: 
- class ExtendTestCaseParams(unittest.TestCase):  
 - #扩展 unittest.TestCase 类,使其支持自定义参数输入 
 -  
 - def __init__(self, method_name='runTest', canshu=None): 
 -  
 - super(ExtendTestCaseParams, self).__init__(method_name) 
 -  
 - self.canshu = canshu 
 -  
 - #静态参数化方法 
 -  
 - @staticmethod 
 -  
 - def parametrize(testcase_klass, default_name=None, canshu=None): 
 -  
 - """ Create a suite containing all tests taken from the given 
 -  
 - subclass, passing them the parameter 'canshu' 
 -  
 - """ 
 -  
 - test_loader = unittest.TestLoader() 
 -  
 - testcase_names = test_loader.getTestCaseNames(testcase_klass) 
 -  
 - suite = unittest.TestSuite() 
 -  
 - if default_name != None: 
 -  
 - for casename in testcase_names: 
 -  
 - if casename == defName: 
 -  
 - suite.addTest(testcase_klass(casename, canshu=canshu)) 
 -  
 - else: 
 -  
 - for casename in testcase_names: 
 -  
 - suite.addTest(testcase_klass(casename, canshu=canshu)) 
 -  
 - return suite 
 
  
这里,canshu 就是优化后加的自定义参数,参数类型可以是元组或列表。下面使用这个参数化类来改写之前的代码。 
- class ApiTestSample(ExtendTestCaseParams): 
 -  
 - def setUp(self): 
 -  
 - pass 
 -  
 - def tearDown(self): 
 -  
 - pass 
 -  
 - def jiafa(self, input01, input02): 
 -  
 - result = input01 + input02 
 -  
 - return result 
 -  
 - def test_jiafa(self): 
 -  
 - input_01 = self.param[0] 
 -  
 - input_02 = self.param[1] 
 -  
 - expectedResult = self.param[2] 
 -  
 - result = self.sub(input_01, input_02) 
 -  
 - print(result) 
 -  
 - self.assertEqual(result, expectedResult) 
 -  
 - if __name__=='__main__': 
 -  
 - testData = [ 
 -  
 - (10, 9, 19), 
 -  
 - (12, 13, 25), 
 -  
 - (12, 10, 22), 
 -  
 - (2, 4, 6) 
 -  
 - ] 
 -  
 - suite = unittest.TestSuite() 
 -  
 - for i in testData: 
 -  
 - suite.addTest(ExtendTestCaseParams.parametrize(ApiTestSample, 'test_jiafa', canshu=i)) 
 -  
 - runner = unittest.TextTestRunner() 
 -  
 - runner.run(suite) 
 
  
执行结果如下: 
- .... 
 -  
 - ## 19 
 -  
 - 25 
 -  
 - Ran 4 tests in 0.000s 
 -  
 - 22 
 -  
 - 6 
 -  
 - OK 
 
  
通过对 unittest 框架优化,我们实现了 unittest  框架的参数化,这样就可以用于接口测试了。虽然我们实现了参数化,但是测试结果的展示不够直观,这个时候需要一个可视化页面来直接显示测试结果。所幸的是,python  中有专门展示测试结果的框架:HTMLTestRunner。该框架可以将测试结果转换为 HTML 页面,并且该框架可以和unittest  框架完美的结合起来。接下来我们讲述一下 HTMLTestRunner 框架的使用。 
3、测试结果可视化                         (编辑:91站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |