Python 接口测试之接口请求方法封装
引言
前面讲过三篇文章:
1、Python 接口测试之Excel表格数据操作方法封装 ;
既然我们接口测试用例写好了,测试数据也拿到了,那么就是模拟调用接口的方法了,方法有get,post,put,delete,具体是选择哪种,我们需要根据不同接口规定好请求方法来调用。为了方便,将四种方法封装到一个类中,每次只需访问类中某个方法,到达请求的目的。
请求方法封装
下面就直接附上代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | __author__ = 'Leo' import requests import json class ApiRequest( object ): "" " 请求方法 "" " # 请求方法get def get_method(self,url,data=None,header=None): if header is not None: res = requests. get (url, params =data,headers=header) else : res = requests. get (url, params =data) return res.json() # 请求方法post def post_method(self,url,data=None,header=None): global res if header is not None: res = requests.post(url,json=data,headers=header) else : res = requests.post(url,json=data) if str(res) == "<Response [200]>" : return res.json() else : return res.text # 请求方法put def put_method(self,url,data=None,header=None): if header is not None: res = requests.put(url,json=data,headers=header) else : res = requests.delete(url, json=data) return res.json() # 请求方法delete def delete_method(self, url, data=None, header=None): if header is not None: res = requests.delete(url, json=data, headers=header) else : res = requests.delete(url, json=data) return res.json() # 主方法 def run_method(self,method,url,data=None,header=None): if method == 'get' or method == 'GET' : res = self.get_method(url,data,header) elif method == 'post' or method == 'POST' : res = self.post_method(url,data,header) elif method == 'put' or method == 'PUT' : res = self.post_method(url,data,header) elif method == 'delete' or method == 'DELETE' : res = self.post_method(url,data,header) else : res = "你的请求方式不正确!" # return res return json.dumps(res, ensure_ascii=False, indent=4, sort_keys=True,separators=( ',' , ':' )) |
简单的解释一下相关知识点:
1 2 3 4 5 6 7 8 9 | ensure_ascii:默认值True,如果dict内含有non-ASCII的字符,则会类似\uXXXX的显示数据,设置成False后,就能正常显示。 indent:应该是一个非负的整型,如果是0,或者为空,则一行显示数据,否则会换行且按照indent的数量显示前面的空白,这样打印出来的json数据也叫pretty-printed json。 separators:分隔符,实际上是(item_separator, dict_separator)的一个元组,默认的就是(‘,’,’:’);这表示dictionary内keys之间用“,”隔开,而KEY和value之间用“:”隔开。 encoding:默认是UTF-8,设置json数据的编码方式。 sort_keys:将数据根据keys的值进行排序。 |
执行测试
方法已经封装好,既然接口数据有了,请求方法也有了,我们不妨测试一下之前封装好的代码,用实际行动来检验一下:
1 2 3 4 5 6 | # get请求 if __name__ == '__main__' : url = "http://httpbin.org/get" ir = ApiRequest() result = ir.run_method(url=url,method= 'get' ) print(result) |
运行结果:
1 2 3 4 5 6 | # post请求 url2 = "http://httpbin.org/post" ir2 = ApiRequest() data = { 'id' : '测试' } result = ir2.run_method(url=url2,method= 'post' ,data=data) print(result) |
运行结果:
有些细心人可能有疑问,这里没有使用excel中的接口测试数据,下面我就演示一下,调用excel中维护的接口测试数据,先维护数据:
1 2 3 4 5 6 7 8 9 10 11 12 | from basic_method import get_excelData get_data = get_excelData.getData() print( "获取是否运行key: " ,get_data.get_is_run(1)) print( "获取接口url: " ,get_data.get_url(1)) print( "获取接口请求方法: " ,get_data.get_method(1)) print( "获取接口请求数据: " ,get_data.get_data(1)) url2 = get_data.get_url(1) method = get_data.get_method(1) data = get_data.get_data(1) ir2 = ApiRequest() result = ir2.run_method(url=url2,method=method,data=data) print(result) |
运行结果:
这次就是调用过程是从excel拿的数据,并且通过封装好的方法请求模拟请求接口。证明此前封装好的代码是可以正常运行。
这里献上另一种请求方法:
总结
上面对接口请求方法封装已经完成了,并且将之前写的封装代码一起使用,实现了自动化测试框架中核心的代码,对自动化测试,测试开发感兴趣的朋友,同学可以加入QQ测试开发交流群:696400122。相互学习,共同进步!
作者:全栈测试开发日记
出处:https://www.cnblogs.com/liudinglong/
csdn:https://blog.csdn.net/liudinglong1989/
微信公众号:全栈测试开发日记
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架