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

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

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

年头参加到一个靠山体系开拓的项目中,内里涉及了许多接口,我做为项目组测试职员,必要对这些接口举办测试,一开始行使 postman 器材测试,极端利便。但跟着接口数目的增进,不仅要执行手动点击测试,并且,一旦接口参数变换,都从头变动接口参数,次数多了,使得测试服从严峻降落。

Python接口测试自动化拭魅战及代码示例:含Get、Post等要领

其后我将眼光转向了自动化测试,思量到项目组对接口质量要求很高,必要快速开拓。最终选定 python 作为剧本开拓说话,行使其自带的 requests 和 urllib 模块举办接口哀求,行使优化后的 unittest 测试框架编写测试接口函数,测试功效选用 HTMLTestRunner 框架予以展示,并行使 python 的 ssl 模块支持 https 协议的验证。接下来,我具体地先容这些模块,并给出各个模块完备的测试代码。

1、接口哀求

python 出格是 python 3.x 中的 urllib 和 requests 模块,是用来哀求 url 的两个首要模块。这两个模块中,假如仅仅是支持 http 协议的 url 哀求,保举行使 requests 模块。为什么这么说呢?由于爱因斯坦说过一句话:简捷就是美。requests 模块对 urllib 模块又做了一层封装,行使越发利便。该模块支持 GET, POST, PUT, DELETE 等哀求要领。哀求返复书息包括状态码和动静体,状态码用三位数字暗示,动静体可用字符串,二进制或json 等名目暗示。下面用一个例子来先容一下 requests 模块的行使。代码如下:

  1. import requests 
  2.  
  3. def get_method(url, para, headers): 
  4.  
  5. try: 
  6.  
  7. req = requests.get(url=url, params=para, headers=headers) 
  8.  
  9. except Exception as e: 
  10.  
  11. print(e) 
  12.  
  13. else: 
  14.  
  15. if req.status_code == "200": 
  16.  
  17. return req 
  18.  
  19. else: 
  20.  
  21. print("Requests Failed.") 
  22.  
  23. if __name__=='__main__': 
  24.  
  25. url = "http://www.google.com" 
  26.  
  27. req = get_method(url=url, para=None, headers=None) 
  28.  
  29. print(req.status_code) 
  30.  
  31. print(req.text) 

输出为:

  1. 200 
  2.  
  3. <!DOCTYPE html> 
  4.  
  5. <!--STATUS OK--><html> <head><meta...(省略) 

上述措施输出状态码为 200,表白哀求乐成,返回动静体为网页内容。这里我仅对requests 模块中的 get 哀求要领做了封装,其余要领(如 post,put,delete 等)的封装相同。当让你也可以不消封装,直接行使 requests.methodName 来直接挪用该要领。这里提示一句,在现实的接口测试中,headers 和 data 都是有值的,要确保这些值的填写正确,大部门哀求下的哀求失败或返回功效错误,根基上都是因为这些值的缺失或错误造成的。更多关于 requests 模块的先容,请参考官方文档。

2、测试框架优化

unittest 是 python 中举办单位测试行使普及的框架,其与 java 中的单位测试框架junit 相同。该框架行使简朴,必要编写以 test 开头的函数,选择 unittest 框架运行测试函数,测试功效在终端表现。这里举一个简朴的例子:

  1. import unittest 
  2.  
  3. class ApiTestSample(unittest.TestCase): 
  4.  
  5. def setUp(self): 
  6.  
  7. pass 
  8.  
  9. def tearDown(self): 
  10.  
  11. pass 
  12.  
  13. def jiafa(self, input01, input02): 
  14.  
  15. result = input01 + input02 
  16.  
  17. return result 
  18.  
  19. def test_jiafa(self): 
  20.  
  21. testResult = self.jiafa(input01=4, input02=5) 
  22.  
  23. self.assertEqual(testResult, 9) 
  24.  
  25. if __name__=='__main__': 
  26.  
  27. unittest.main() 

简朴表明下这段代码,起首我们建设一个类 ApiTestSample,这个类担任自unittest.TestCase 类。然后在这个类中写了 jiafa 函数,它有两个参数 input01,input02,返回 input01 与 input02 相加的和。接着在 test_jiafa 要领中,我们对适才 jiafa 函数举办了和值校验。通过给 jiafa 输入两个值,获取其函数返回值,并与真实值做相称判定,以此实现函数单位测试。这里用到了 unittest 间断言值相称的 assertEqual(m, n)函数,上述代码运行功效如下:

  1. Ran 1 test in 0.000s 
  2.  
  3. OK 

以上是 unittest 框架最根基的单位测试应用,可是这个框架有个缺陷,就是不能本身传入参数。对付接口来说,每每必要传入许多参数,而且这每个参数又有许多取值,假如差池原先的 unittest 框架做改变,不只无法用来举办接口测试,并且一个个团结参数取值去写测试代码,事变量极其复杂,也没有实现测试数据与剧本没有疏散。基于此,我们对该框架做出一下两点优化。

1)扩展 unittest.TestCase 类,支持自界说参数输入;

2)测试数据与测试脚天职离,测试数据存储在文件和数据库中,以加强测试剧本复用性;

(编辑:湖南网)

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

热点阅读