接口自动化-requests库

requests库是用来发送请求的库,本篇用来讲解requests库的基本使用。

1.安装requests库

pip install requests

2.requests库底层方法的调用逻辑

(1)get / post / put / delete 四种方法底层调用 request方法
在这里插入图片描述
注意:data和json都可以作为Post请求的参数,但是使用时机不同。当传参是json类型时,使用json,当传参是文件时使用files,其他时候使用data。

(2)request方法底层调用session.request方法
在这里插入图片描述

(3)因为get / post / put / delete 四种方法不能对有cookie关联的接口进行自动关联,而session.request方法可以进行自动管理,所以常用session.request方法发送请求。


3.session.request方法的参数,常用的有:


参数说明
method请求方法
url请求路径
params=Noneget请求传参
data=Nonepost或put请求传参
json=Nonepost请求传参
headers=None请求头
cookies=NoneCookie
files=None文件上传

4.接收响应

session.request方法发送请求后会返回响应,接收响应时需要根据响应的类型来接收:

接收方式说明
res.text返回文本信息
res.json()返回json格式
res.content返回的字节内容
res.status_code返回的状态码
res.reason返回的状态信息
res.cookies返回的coolie
res.encoding返回的编码格式
res.headers返回的响应头

5.接口关联

当后一个接口的参数需要从前一个接口的响应数据中获取时,就需要进行接口关联。

实现接口关联有三种方式:

  1. 通过类变量保存中间变量
  2. 通过单独文件保存中间变量
  3. 极限封装成工具一样,只需要通过表达式

首先说明如何通过类变量保存中间变量?
只需要从前一个接口中提取到变量设置为类变量,就可以通过类名在第二个接口中调用了。

class Testapi:access_token = ""

而从响应中提取变量有两种方式:

  1. 正则表达式提取(适用于提取文本结果)
  2. JsonPath提取 (适用于提取json结果)

正则表达式提取变量的方法有两种:

  • re.search() 提取单个值,通过下标取值
  • re.findall() 提取多个值,通过下标取值

re.search(表达式,对象)

result = res.text
Testapi.access_token = re.search('xxx(.*?)xxx',result).group(1)

JsonPath提取变量只有一个方法:
jsonpath.jsonpath(对象,表达式)

result = res.json()
value = jsonpath.jsonpath(result,”$.access_token”)

jsonPath表达式规则:

规则解释
$根节点
.子节点
递归取子节点
[]代表取列表中的值,下标从0开始

6.统一的请求封装

请求四要素:请求方法、请求路径、请求参数、请求头
响应四要素:响应码、响应信息、响应内容、响应头

所有请求的发送都是组织请求四要素然后发送,这种相同类型的操作可以进行统一的封装,减少冗余代码,同时可以对请求进行统一管理,如统一异常处理,统一日志监控。

在统一封装请求时,可以直接将参数传递给session.request()方法的可变长度参数,就不需要考虑参数的类型了。

# 封装
class RequestUtils:sess = requests.session();# 统一发送请求def all_send_request(self,**kwargs):res = RequestUtils.sess.request(**kwargs)print(kwargs["method"])#获取请求方式return res
class Testapi:# 调用def test_file_upload(self):url=""datas={"meida":open("E:\\111.png","rb")} # 文件的字节流res = RequestUtils().all_send_request(method="post",url=url,files=datas)

封装之后会发现第一种通过类变量保存中间变量,在跨文件使用时会导致用例出错。

为了解决这个问题,我们可以使用第二种方法:通过单独的文件保存中间变量,来实现接口关联。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

边缘计算安全有多重要

德迅云安全研究发现边缘安全是对存储或处理在网络边缘的数据的保护。边缘可以用不同的方式定义,但一般来说,它包括企业直接控制之外的任何设备或位置。这可能包括传感器、连接物联网的设备和移动设备。 边缘计算正在彻底改变商业运作方式。这引发了对边缘…

WordPress原创插件:超链接点击访问统计

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 一般我们都使用第三方统计服务(比如百度统计)来统计网站的访问量,使用此插件可以统计文章的浏览次数,那么,如果想统计网站外…

(规格参考)ADP5360ACBZ-1-R7 电量计 电池管理IC,ADP5072ACBZ 双通道直流开关稳压器,ADL5903ACPZN 射频检测器

1、ADP5360ACBZ-1-R7:具有超低功耗电量计、电池保护功能的先进电池管理PMIC 功能:电池保护 电池化学成份:锂离子/聚合物 电池数:1 故障保护:超温,过压 接口:I2C 工作温度:-40C ~ 85…

生活服务商家拥抱数字化,鸿运果系统加速“服务生意数字化”进程

在数字化转型的大潮中,生活服务商家正积极拥抱变革,以适应新的市场环境和消费者需求。鸿运果系统作为专业的“服务生意”数字化解决方案提供商,正助力商家加速数字化转型,推动行业向智能化、个性化服务转型。 数字化转型的背景 …

人才测评:计划管理能力与岗位胜任力素质测评

计划管理能力指的是什么? 计划管理能力,可以体现为从业者在精准制定好任务,或是根据任务的时间长,困难的程度来设定好完成的目标,一步一个脚印将工作完成好,并且能预估出可能出现的突发事件,将…

AI工具的热门与卓越:揭示AI技术的实际应用和影响

文章目录 每日一句正能量前言常用AI工具创新AI应用个人体验分享后记 每日一句正能量 我们在我们的劳动过程中学习思考,劳动的结果,我们认识了世界的奥妙,于是我们就真正来改变生活了。 前言 随着人工智能(AI)技术的快…

【Linux取经路】进程通信之匿名管道

文章目录 一、进程间通信介绍1.1 进程间通信是什么?1.2 进程间通信的目的1.3 进程通信该如何实现 二、管道2.1 匿名管道2.1.1 站在文件描述符角度深入理解管道2.1.2 接口使用2.1.3 PIPE_BUFFER 和 Pipe capacity2.1.4 管道中的四种情况2.1.5 管道特征总结 2.2 匿名管…

华为、小米、魅族都开始造车了!中国还有多少手机厂家要下场造车?2024如果创业适合干什么?2024最适合创业的细分行业

要说现在中国最火、声量最高的创业是什么?那一定是造车! 小米这样的手机公司在造车、创维这样的电视家电品牌在造车、甚至就连五粮液这样的白酒品牌也在造车!至于其他的还有什么做地产的恒大、做电动车的新日等等,数不数胜。而在手…

如何进行事务处理

1、问题背景 在数据库存储系统中,事务处理是一种保证多个数据库操作作为单个逻辑单元执行的技术。事务处理可以确保数据的一致性、完整性和隔离性。 在使用 Google Cloud Datastore 时,可以使用 datastore.transaction() 函数来进行事务处理。datastor…

DBeaver连接数据库

前言 DBeaver是一款免费和开源的数据库管理工具,为开发人员和数据库管理员提供了一个通用的数据库解决方案。以下是DBeaver的主要特点和功能: 跨平台支持:DBeaver支持Windows、Linux、macOS等主流操作系统,用户可以在不同的平台…

MATLAB公式推导和导出Latex格式的方法

最近在推机械臂正逆运动学公式,那个旋转矩阵乘起来是真滴多,手算算的脑浆疼。突然想起来MATLAB还有符号计算这个功能,于是翻了翻手册, 找到了这个利用MATLAB帮助计算公式并且直接导出Latex格式的办法。 先定义符号变量&#xff0…

我的职场加速器-高效工作从可道云teamOS开始

不论是作为管理者,还是普通打工人,在日常工作中,我们都需要一款既能够保障数据安全,又能够提升团队协作效率的平台。 近期,我体验了可道云teamOS,这款企业级云协作平台给我留下了深刻的印象。 一、极简风…

基于springboot+mybatis+vue的项目实战之前端

步骤: 1、项目准备:新建项目,并删除自带demo程序,修改application.properties. 2、使用Apifox准备好json数据的mock地址 3、编写基于vue的静态页面 4、运行 整个的目录结构如下: 0、项目准备 新建项目&#xff0…

力扣【旋转函数】python

如果直接用暴力的话,只能过4个样例好像,超时 因此得用递推公式 F1F0前n-1个数-(n-1)*第n个数 F0sum(nums)-n*第n个数 nlen(nums) ans[]#定义一个存最大值值的列表 ss sum(nums) dm 0 for j in range(n):dm j * nums[j] ans.append(dm) print(dm) n…

Google IO 2024有哪些看点呢?

有了 24 小时前 OpenAI 用 GPT-4o 带来的炸场之后,今年的 Google I/O 还未开始,似乎就被架在了一个相当尴尬的地位,即使每个人都知道 Google 将发布足够多的新 AI 内容,但有了 GPT-4o 的珠玉在前,即使是 Google 也不得…

应用软件安全保证措施方案书

系统安全保证措施方案—word原件 软件全套资料进主页获取或者本文末个人名片直接获取。

“网络安全新纪元:等保2.0的详细解读与实践”

网络安全等级保护基本要求》(等保2.0)于2019年6月发布,是我国网络安全等级保护制度的一项重要标准。等保2.0主要针对关键信息基础设施的网络安全保护,对数据安全和个人信息保护提出了更高的要求。本文将对等保2.0进行详细解读&…

微信小程序如何变现

微信小程序有多种变现方式,以下是一些主要的方法: 广告变现:在小程序中嵌入广告,通过点击、曝光等手段获取收益。这是一种非常普遍的变现方式,尤其适合流量较大、用户活跃度较高的小程序。 电商变现:通过…

嵌入式科普(16)c语言函数参数的传递方式

目录 一、概述 二、C函数参数 2.1 一张图讲清 2.2 按数据类型分类: 2.2.1 基本数据类型参数: 2.2.2 数组参数: 2.2.3 结构体参数: 2.2.4 指针参数: 2.2.5 函数指针参数: 2.3 按传递方式分类&…

分布式搜索-elaticsearch基础 概念

什么是elaticsearch: 倒排索引:就是将要查询的内容分成一个个词条,在将词条文档id存入,词条是唯一的。 文档词条总结: mysql和Elasticsearch概念对比: 架构: 基本概念总结: