BAT 名企大厂做接口自动化如何高效使用 Requests ?

news2025/1/21 6:32:43

1080×428 28.9 KB

Requests是一个优雅而简单的python HTTP库,其实python内置了用于访问网络的资源模块,比如urllib,但是它不如requests简单,优雅,而且缺少许多实用功能。接下来的接口测试的学习和实战,都与requests库息息相关。

Requests官方文档:https://2.python-requests.org/en/master/ 2 接下来就会使用最流行的requests进行接口测试

requests提供了几乎所有的HTTP请求构造方法,以及通过传入参数的方法,对发送的请求进行定制化的配置。可以用来应对各种不同的请求场景。

pip命令安装requests。

pip install requests

发送get请求

import requestsr = requests.get('https://api.github.com/events')

在请求中添加data参数,并发送post请求

import requestsr = requests.post('http://httpbin.org/post', data = {'key':'value'})

在请求中添加data参数,并发送put请求

import requestsr = requests.put('http://httpbin.org/put', data = {'key':'value'})

发送delete请求

import requestsr = requests.delete('http://httpbin.org/delete')

发送head请求

mport requestsr = requests.head('http://httpbin.org/get')

发送options请求

import requestsr = requests.options('http://httpbin.org/get')

也可以直接使用request函数,传入不同的method,例如使用这个方法发送get请求

import requestsrequests.request("get", "http://www.baidu.com")

下面的参数都是非必须参数,但是如果需要对请求做额外的定制化,则需要以下这些参数的作用。

  • header参数,通过传入dict定制请求头

import requests

url = 'https://api.github.com/some/endpoint'headers = {'user-agent': 'my-app/0.0.1'}

r = requests.get(url, headers=headers)

  • data参数发送编码为表单形式的数据单

>>> payload = {'key1': 'value1', 'key2': 'value2'}>>> r = requests.post("http://httpbin.org/post", data=payload)>>> print(r.text)

{

... "form": { "key2": "value2", "key1": "value1"

},

...

}

  • files参数,上传文件,dict格式。

>>> url = '>>" target="_blank">http://httpbin.org/post'>>> files = {'file': open('report.xls', 'rb')}>>> r = requests.post(url, files=files)>>> r.text{

...

"files": {

"file": "<censored...binary...data>"

},

...

}

注意:建议用二进制模式(binary mode)打开文件。这是因为 Requests 可能会试图为你提供 Content-Length header,在它这样做的时候,这个值会被设为文件的字节数(bytes)。如果用文本模式(text mode)打开文件,就可能会发生错误。

  • timeout参数设定超时时间(秒),到达这个时间之后会停止等待响应:

>>> requests.get('http://github.com', timeout=0.001)

Traceback (most recent call last):

File "<stdin>", line 1, in <module>requests.exceptions.Timeout:\

HTTPConnectionPool(host='github.com', port=80):\

Request timed out. (timeout=0.001)

注意:timeout 仅对连接过程有效,与响应体的下载无关。 timeout 并不是整个下载响应的时间限制,而是如果服务器在 timeout 秒内没有应答,将会引发一个异常(更精确地说,是在 timeout 秒内没有从基础套接字上接收到任何字节的数据时),如果不设置 timeout,将一直等待。

  • allow_redirects参数
    控制是否启用重定向,bool类型,选择True为启用,选择False为禁用

import requests>>> r = requests.get('http://github.com', allow_redirects=False)>>> r.status_code301

  • proxies参数
    设置代理,dict格式,key值为选择的协议,可以分别设置http请求和https请求的代理。

import requests

proxies = { 'http': 'http://10.10.1.10:3128',

'https': 'http://10.10.1.10:1080',}

requests.get('https://api.github.com/events', proxies=proxies)

  • verify参数可以传入bool值或者string,默认为True。

如果设置为False的即为忽略对SSL证书的验证;反之就是需要做验证;如果传入值为string的话,代表指定本地的证书作为客户端证书。

  • 从本地传入证书

import requests>>> requests.get('https://github.com', verify='/path/to/certfile')

  • 忽略对SSL证书的验证

import requests>>> requests.get('https://kennethreitz.org', verify=False)

另外三个重要参数json、cookies、auth则会在后面的章节进行详细的介绍。

接口请求断言是指在发起请求之后,对返回的响应内容去做判断,用来查看是否响应内容是否与规定的返回值相符。

在发起请求后,我们使用一个变量r存储响应的内容,也就是Response对象。

>>> import requests>>> r = requests.get('>>" target="_blank">http://httpbin.org/get')>>> print(r)<Response [200]>>>> import requests>>> r = requests.get('>>" target="_blank">http://httpbin.org/get')>>> print(r)<Response [200]>

Response对象有很多功能强大的方法可以调用,比如直接获取响应头,获取Unicode编码后的响应内容,获取二进制的响应内容,获取原始的响应内容等等。

  • 获得响应头

>>> r.headers

{'Date': 'Sun, 05 Apr 2020 16:38:09 GMT', \'Content-Type': 'application/json', \'Content-Length': '308', 'Connection': 'keep-alive',\ 'Server': 'gunicorn/19.9.0', \ 'Access-Control-Allow-Origin': '*', \ 'Access-Control-Allow-Credentials': 'true'}

  • 获得编码后的响应值

>>> print(r.text){ "args": {},

"data": "",

"files": {},

"form": { "hogwarts": [ "a",

"b",

"c"

]

},

"headers": { "Accept": "*/*",

"Accept-Encoding": "gzip, deflate",

"Content-Length": "32",

"Content-Type": "application/x-www-form-urlencoded",

"Host": "httpbin.org",

"User-Agent": "python-requests/2.22.0",

"X-Amzn-Trace-Id": "Root=1-5e8a01e3-0913fca09ac605ccc911ccde"

},

"json": null,

"origin": "113.118.101.232",

"url": "http://httpbin.org/post"}

还可以使用r.raw获得原始响应内容,r.content获得二进制的响应内容,另外还有编码为json格式的响应内容,会在后面的章节进行详述。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/161170.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

语音识别系列之基于CTC的VAD

语音活动性检测&#xff08;Voice Activity Dection, VAD&#xff09;常作为语音识别系统的前端模块过滤非语音段&#xff0c;为后续增强模块提供语音/非语音判据&#xff0c;从而更好的掌握背景噪声特性&#xff0c;进而提升降噪量&#xff0c;保证识别性能&#xff0c;且能降…

GitHub进阶使用指南

GitHub进阶使用指南1.个性化 Github 首页2.自定义项目徽章3.自动为项目添加贡献情况图标4.高效阅读 Github 项目的源代码5.扩展 Github 的功能1.个性化 Github 首页 Github 目前支持在个人主页自定义展示一些内容&#xff1a; 想要做到这样非常简单&#xff0c;你只需要创建一…

创建切实可行的项目管理计划会带来什么好处?

项目管理计划是深入了解项目来龙去脉的地方&#xff0c;可以说是指导你从头到尾完成项目的地图。 项目章程是项目的高层次愿景&#xff0c;而项目管理计划将这一愿景分解为项目的实际日常执行&#xff0c;涵盖为实现项目目标所需要做的一切。 一个详细的项目计划将规划出从…

Java自动拆装箱与缓存——Java中的128陷阱

在讲解128陷阱之前&#xff0c;需要了解一些概念。 包装器类型 Java是面向对象的语言&#xff0c;但基本类型并不是面向对象的&#xff0c;从而出现了包装器类型&#xff0c;并且包装器添加了更多的属性和方法。如我们在使用集合类型Collection的时候就一定要使用包装类型而非…

高等学校学生公寓消防安全设计及管理设计要点

摘要&#xff1a;高等学校学生公寓是学生生活起居和日常活动的重要场所&#xff0c;具有人员同时聚集的特征&#xff0c;属于人员密集场所。特别是晚间休息时&#xff0c;此时宿舍内人员达到满员状态。学生的生活及学习物品&#xff0c;如被褥、衣服、书籍等&#xff0c;都属于…

Prometheus标签的使用说明

prometheus在处理数据指标的过程中&#xff0c;包括【抓取的生命周期】和【标签的生命周期】 默认情况下&#xff0c;当prometheus加载target实例完成后&#xff0c;这些target时候会包含一些默认的标签&#xff0c;这些标签将会告诉prometheus如何从target实例中获取监控数据…

【3】Linux多节点部署KubeSphere|最简单的安装方法

目录 步骤1&#xff1a;准备三台服务器 步骤2&#xff1a;下载KubeKey 步骤3&#xff1a;创建集群 1. 创建示例配置文件 2. 编辑配置文件 3. 使用配置文件创建集群 4. 验证安装 步骤1&#xff1a;准备三台服务器 4c8g (master)8c16g * 2 (worker)centos7.9内网互通每个机…

Tiktok的发展趋势以及政策支持,你了解多少?

武汉瑞卡迪电子商务有限公司&#xff1a;为了方便大家的阅读&#xff0c;这篇文章将分为以下几个板块&#xff1a; 1、Tiktok的基本介绍 2、Tiktok的发展趋势以及政策支持 3、新手运营Tiktok的方法 4、Tiktok引流的方法 一、Tiktok的基本介绍 TikTok TikTok国际版&#xf…

express 1.1安装express And 1.2创建项目

目录 1.1安装express 1.2.1 创建项目 &#xff08;1&#xff09;使用vscode&#xff0c;可以快速创建项目&#xff0c;vscode把终端聚合在了一起&#xff0c;打开vscode终端 &#xff08;2&#xff09;进入工作目录 &#xff08;3&#xff09;执行创建命令 &#xff08;4&…

MySQL必知必会_SELECT部分

最近在读MySQL必知必会&#xff0c;关于这本书打算写点读后感&#xff0c;大概是两篇博客的体量。 其实对于测试岗来说&#xff0c;不管是面试还是实际工作中&#xff0c;最重要的自然当属SELECT。 下面我把书里关于SELECT的知识点简单记一下吧。 首先在MySQL中其实是不区分…

【MySQL】第二部分 MySQL的启动和登录

【MySQL】第二部分 MySQL的启动和登录 文章目录【MySQL】第二部分 MySQL的启动和登录2. MySQL的启动和登录2.1 服务的启动与停止2.2 客户端登录查看版本信息退出登录2.3 演示命令行的使用总结2. MySQL的启动和登录 2.1 服务的启动与停止 MySQL的安装就不过多介绍了,大家可以去…

OpenSceneGraph纹理API开发指南【OSG】

前面的教程中&#xff0c;我们用彩虹的所有颜色画了一个正方形。然而&#xff0c;还有另一种成为纹理映射的技术&#xff0c;将光栅二维图像应用于三维几何。在这种情况下&#xff0c;效果不是针对几何体的顶点&#xff0c;而是通过栅格化场景更改获得的所有像素的数据。这种技…

好雨科技加入龙蜥 完成与 Anolis OS 兼容适配

近日&#xff0c;北京好雨科技有限公司&#xff08;以下简称“好雨科技”&#xff09;签署了 CLA&#xff08;Contributor License Agreement&#xff0c;贡献者许可协议&#xff09; &#xff0c;正式加入龙蜥社区&#xff08;OpenAnolis&#xff09;。好雨科技成立于 2015 年…

bug总是多不如看一看,前端写完代码进行的自测流程减少bug重复反工,提高开发效率。

提测标准&#xff1a;修改bug前要熟知之前的操作逻辑以及涉及其代码的周边逻辑&#xff0c;修改bug后的操作逻辑和测试确认&#xff0c;检测其它周边逻辑。至少需要另外1个开发进行交叉测试必要时进行代码Code Review&#xff08;代码规范&#xff0c;主要逻辑&#xff0c;复杂…

服务器SMTP邮件设置

服务器SMTP邮件设置 在服务器设置登录验证时需要绑定一个自动收发邮件的服务器进行验证 这时候就要对STMP进行配置&#xff0c;如下 填写的主机为邮件对应的主机 腾讯QQ邮箱 POP3&#xff1a;pop.qq.com SMTP&#xff1a;smtp.qq.com IMAP&#xff1a;imap.qq.com 端口&…

1.13

周报 完善案例 ​ this.$nextTick(function () {this.$refs.input.focus()})}​ //点击编辑直接获取焦点 this.$refs.input.focus() //但是这种写法 由于input是用v-show控制的 所以执行了上面代码 改变了isEdit值 但是不会立马去重新解析模板 input框还没有出来 //将handleed…

算法第十期——DFS(深度优先搜索)的剪枝优化

目录 DFS:剪枝 DFS:有哪些剪枝方法 DFS例题一&#xff1a;剪格子 【思路】 DFS例题二&#xff1a;路径之谜 【样例分析】 DFS例题三&#xff1a;四阶幻方 【思路】 【做法一】 【做法二】 DFS例题三&#xff1a;分考场 【样例分析】 【思路】 DFS习题 DFS:剪…

TPM零知识学习十一 —— tpm全安装流程复盘(下)

接前一篇文章《TPM零知识学习十 —— tpm全安装流程复盘&#xff08;中&#xff09;》&#xff0c;链接为&#xff1a; TPM零知识学习十 —— tpm全安装流程复盘&#xff08;中&#xff09;_蓝天居士的博客-CSDN博客 五、TPM模拟器做成服务 本步骤前导步骤参见 《TPM零知识学…

Docker——网络配置

目录 本次目标&#xff1a; 一、Docker网络配置 1.bridge模式(默认模式) 2.host模式 二、bridge模式 三、host模式 网络模式与数据卷容器挂载的操作 四、如何创建自定义网络 本次目标&#xff1a; Docker网络配置Docker部署SpringCloud项目 一、Docker网络配置 Dock…

蓝牙耳机啥牌子音质好?听音乐最好的蓝牙耳机分享

现如今&#xff0c;蓝牙耳机越来越成为外出携带设备使用频率最高的数码产品之一。随着技术的进步&#xff0c;蓝牙耳机在音质上的表现也受到了很多人的关注。在这&#xff0c;我来给大家介绍四款音质很不错的蓝牙耳机&#xff0c;一起来看看吧。 一、南卡小音舱蓝牙耳机 售价…