加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

Python接口测试自动化实战及代码示例:含Get、Post等方法

发布时间:2019-07-18 13:37:37 所属栏目:建站 来源:Atstudy网校
导读:年头参加到一个靠山体系开拓的项目中,内里涉及了许多接口,我做为项目组测试职员,必要对这些接口举办测试,一开始行使 postman 器材测试,极端利便。但跟着接口数目的增进,不仅要执行手动点击测试,并且,一旦接口参数变换,都从头变动接口参数,次数多

以下是对 unittest.TestCase 类的扩展,使其支持参数化把参数加进去。下面是详细的代码实现进程:

  1. class ExtendTestCaseParams(unittest.TestCase):  
  2. #扩展 unittest.TestCase 类,使其支持自界说参数输入 
  3.  
  4. def __init__(self, method_name='runTest', canshu=None): 
  5.  
  6. super(ExtendTestCaseParams, self).__init__(method_name) 
  7.  
  8. self.canshu = canshu 
  9.  
  10. #静态参数化要领 
  11.  
  12. @staticmethod 
  13.  
  14. def parametrize(testcase_klass, default_name=None, canshu=None): 
  15.  
  16. """ Create a suite containing all tests taken from the given 
  17.  
  18. subclass, passing them the parameter 'canshu' 
  19.  
  20. """ 
  21.  
  22. test_loader = unittest.TestLoader() 
  23.  
  24. testcase_names = test_loader.getTestCaseNames(testcase_klass) 
  25.  
  26. suite = unittest.TestSuite() 
  27.  
  28. if default_name != None: 
  29.  
  30. for casename in testcase_names: 
  31.  
  32. if casename == defName: 
  33.  
  34. suite.addTest(testcase_klass(casename, canshu=canshu)) 
  35.  
  36. else: 
  37.  
  38. for casename in testcase_names: 
  39.  
  40. suite.addTest(testcase_klass(casename, canshu=canshu)) 
  41.  
  42. return suite 

这里,canshu 就是优化后加的自界说参数,参数范例可所以元组或列表。下面行使这个参数化类来改写之前的代码。

  1. class ApiTestSample(ExtendTestCaseParams): 
  2.  
  3. def setUp(self): 
  4.  
  5. pass 
  6.  
  7. def tearDown(self): 
  8.  
  9. pass 
  10.  
  11. def jiafa(self, input01, input02): 
  12.  
  13. result = input01 + input02 
  14.  
  15. return result 
  16.  
  17. def test_jiafa(self): 
  18.  
  19. input_01 = self.param[0] 
  20.  
  21. input_02 = self.param[1] 
  22.  
  23. expectedResult = self.param[2] 
  24.  
  25. result = self.sub(input_01, input_02) 
  26.  
  27. print(result) 
  28.  
  29. self.assertEqual(result, expectedResult) 
  30.  
  31. if __name__=='__main__': 
  32.  
  33. testData = [ 
  34.  
  35. (10, 9, 19), 
  36.  
  37. (12, 13, 25), 
  38.  
  39. (12, 10, 22), 
  40.  
  41. (2, 4, 6) 
  42.  
  43.  
  44. suite = unittest.TestSuite() 
  45.  
  46. for i in testData: 
  47.  
  48. suite.addTest(ExtendTestCaseParams.parametrize(ApiTestSample, 'test_jiafa', canshu=i)) 
  49.  
  50. runner = unittest.TextTestRunner() 
  51.  
  52. runner.run(suite) 

执行功效如下:

  1. .... 
  2.  
  3. ## 19 
  4.  
  5. 25 
  6.  
  7. Ran 4 tests in 0.000s 
  8.  
  9. 22 
  10.  
  11.  
  12. OK 

通过对 unittest 框架优化,我们实现了 unittest 框架的参数化,这样就可以用于接口测试了。固然我们实现了参数化,可是测试功效的展示不足直观,这个时辰必要一个可视化页面来直接表现测试功效。所幸的是,python 中有专门展示测试功效的框架:HTMLTestRunner。该框架可以将测试功效转换为 HTML 页面,而且该框架可以和unittest 框架美满的团结起来。接下来我们报告一下 HTMLTestRunner 框架的行使。

3、测试功效可视化

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读