引言

前面讲过三篇文章:

既然我们接口测试用例写好了,测试数据也拿到了,那么就是模拟调用接口的方法了,方法有get,post,put,delete,具体是选择哪种,我们需要根据不同接口规定好请求方法来调用。为了方便,将四种方法封装到一个类中,每次只需访问类中某个方法,到达请求的目的。

请求方法封装

下面就直接附上代码:

__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) == "":

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=(',', ':'))

简单的解释一下相关知识点:

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的值进行排序。

执行测试

方法已经封装好,既然接口数据有了,请求方法也有了,我们不妨测试一下之前封装好的代码,用实际行动来检验一下:

# get请求

if __name__ == '__main__':

url = "http://httpbin.org/get"

ir = ApiRequest()

result = ir.run_method(url=url,method='get')

print(result)

运行结果:

# post请求

url2 = "http://httpbin.org/post"

ir2 = ApiRequest()

data = {'id': '测试'}

result = ir2.run_method(url=url2,method='post',data=data)

print(result)

运行结果:

有些细心人可能有疑问,这里没有使用excel中的接口测试数据,下面我就演示一下,调用excel中维护的接口测试数据,先维护数据:

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。相互学习,共同进步!

python 接口测试 url_Python 接口测试之接口请求方法封装相关推荐

  1. jmeter存储http请求返回参数_Jmeter接口测试之HTTP请求默认值(八)

    原标题:Jmeter接口测试之HTTP请求默认值(八) 不管是在UI级别的自动化测试还是在接口级别的自动化测试中,对公共数据数据的分离都是一种趋势,或者某种程度来说,这是自动化测试中必须要掌握的一种能 ...

  2. php调用美图接口,网易美图 API 接口调用与请求方法详细教程

    原标题:网易美图 API 接口调用与请求方法详细教程 网易美图 API 接口在网上已经很多且大都封装成了 API 供别人调用.支持前台跨域请求,以POST方式提交图片即可.网易美图 API 接口会随机 ...

  3. http接口测试:了解协议、请求方法、响应状态码

    http接口测试:了解协议.请求方法.响应状态码 接口在各个系统间的重要性无需重申,主要体现在外部系统与系统之间以及内部各子系统之间的交互点.通过这些特定的交互点和一些特殊的规则标准(协议)来进行系统 ...

  4. 接口测试之接口的定义

    接口测试之接口的定义 文章目录 接口测试之接口的定义 前言 一.什么是接口 二.什么是接口测试 三.接口分类 1.http接口 2.Tthrift接口 总结 前言 提示:我们经常听到接口,到底什么是接 ...

  5. python headr方法_对Python发送带header的http请求方法详解

    简单的header import urllib2 request = urllib2.Request('http://example.com/') request.add_header('User-A ...

  6. (45.3)【API接口漏洞专题】API接口原理、请求方法、类型、安全校验方法

    目录 一.接口定义: 二.API接口原理: 三.接口请求方式(以http为例) 3.1.使用: 3.2.常见的: 3.3.全面的: 3.4.get型 3.4.1.使用: 3.4.2.应用: 3.4.3 ...

  7. jq封装接口ajax,jquery ajax方法封装及api文件设计的代码示例

    本篇文章给大家带来的内容是关于jquery ajax方法封装及api文件设计的代码示例,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 封装 jquery ajax 文件/** * 封 ...

  8. 基于hi-nginx的web开发(python篇)——动态路由和请求方法

    hi.py 的提供的路由装饰器接受两个参数,第一个参数指定动态路由的正则模式,第二个参数指定同意的http请求方法列表. 比如: 1 @app.route(r"^/client/?$&quo ...

  9. 多测师拱墅校区肖sir_高级金牌讲师_接口测试之接口文档和接口用例

    一.接口文档 二.接口用例 ============================= 一.接口文档 1.接口接口结构 (1)url 接口路径(请求协议,ip,路径) (2) 请求方式 (post,g ...

最新文章

  1. Python time库的使用总结
  2. C#多线程学习(四) 多线程的自动管理(线程池) (转载系列)——继续搜索引擎研究...
  3. 超参数调优河伯、组合优化器CompBO,华为诺亚开源贝叶斯优化库
  4. html中 主标题与副标题,wordpress首页SEO:让主标题+副标题作为页面title
  5. 面试 4 个月,最终入职大厂经验分享!
  6. BZOJ3916 [Baltic2014]friends
  7. 通过Java反编译揭开一些问题的真相
  8. Need to upgrade docker package to 17.06.0+. Docker升级到最新版本
  9. 职高学计算机走单招是,职高学生不用愁了,还有机会上本科,走“单招”或是最佳途径!...
  10. 数据库的事务隔离级别
  11. Filter转译编码问题之谜
  12. Java、素数的个数
  13. RK3588超强8K视频输出NRV边缘计算盒 AI人工智能
  14. 《富爸爸,穷爸爸》这本书有何价值?
  15. U8存货核算月末结账的月份跟日期对不上,导致无法结账
  16. Java 网络IO编程
  17. 已更新 联通 电信 tiny模式
  18. 仪表板展示|DataEase可视化数据分析工具中的仪表板跳转和联动设置
  19. 【Proteus仿真】【51单片机】LED点阵花样显示设计
  20. 微信小程序页面传值的几种方式

热门文章

  1. js 获取url多个参数
  2. python遍历数组冒泡排序法_十种排序七种搜索算法的Python实现——气泡排序,十大,七大,查找,python,冒泡排序,bubblesort...
  3. python购物记录程序_python ATM购物程序
  4. 中反应器体积_实验室规模半连续和连续生物反应器在微生物学和生物技术工艺中的作用...
  5. linux io 分析,Linux 下的I/O性能分析 iotop
  6. nema gps数据转换 matlab,GPS通信的NEMA协议与定位数据的提取.pdf
  7. json解析对应的value为null_JSON 学习笔记第一天——初识
  8. Special Permutation CodeForces - 1352G(构造)
  9. long long c语言_带你打开C语言的大门之C语言的变量
  10. 亚马逊 开发者api 调用_关于微信API:常用微信API文档整理