从0开始python学习-41.requsts中session关联接口

news/2025/2/9 7:41:07/

问题:在多接口测试中,存在接口token等参数需要关联的情况,为了避免无法进行关联或者错误关联及写很多冗余代码的情况。采用session的方式进行接口关联

作用:requests库的session会话对象可以跨请求保持某些参数,Requests中的Session会话管理的作用就是自动的记录cookie和session的登录状态

使用正则表达式通过session关联

class TestApi:csrf_token = ''access_token = ''session = requests.session()  # 确保是同一个session回话def test_phpwind(self):url = 'http://47.107.116.139/phpwind/'res = TestApi.session.request(method="get",url=url)# print(res.text)# 因为token是在文本中,通过正则表达式的方式获取tokenres_token = re.search('name="csrf_token" value="(.*?)"',res.text)TestApi.csrf_token = res_token.group(1)print(TestApi.csrf_token)def test_phpwind_login(self):url = 'http://47.107.116.139/phpwind/index.php?m=u&c=login&a=dorun'header = {"Accept":"application/json, text/javascript, /; q=0.01","X-Requested-With":"XMLHttpRequest"}data = {"username":"baili","password":"baili123","csrf_token":TestApi.csrf_token,"backurl":"http://47.107.116.139/phpwind/","invite":""}res = TestApi.session.request(method="post",url=url, data=data, headers=header)print(res.json())

使用jsonpath通过session关联,跟上面共有一个session

def test_get_token(self):url = 'https://api.weixin.qq.com/cgi-bin/token'params ={"grant_type":"client_credential","appid":"wx74a8627810cfa308","secret":"e40a02f9d79a8097df497e6aaf93ab80"}res = TestApi.session.request(method="get",url=url,params=params)print(res.json())access_token= jsonpath.jsonpath(res.json(),'$.access_token')TestApi.access_token = access_token[0]print(access_token[0])def test__edit_flag(self):url = 'https://api.weixin.qq.com/cgi-bin/tags/update'params = {"access_token":TestApi.access_token}json = {"tag" : {"id":134,"name":"广东人"}}res = TestApi.session.request(method="post", url=url, params=params, json=json)print(res.json())

从上面代码可以看出:

1. 在类下面建立了一个session = requests.session()请求,然后所有方法通过TestApi.session.request()的方式调用同一个session

2. 将需要关联的token先access_token = ''后,之后直接将接口中获取到的token通过TestApi.access_token = access_token[0]的方式赋值给到access_token,这样之后的接口需要使用时直接调用即可


http://www.ppmy.cn/news/1293776.html

相关文章

C++学习笔记(二十五):c++ 智能指针

c中的内存的分配和释放是由程序员自己规划。智能指针不需要自己去delete一个new的对象,会自动释放对应的内存空间。unique_ptr:作用域指针,超出作用域后自动释放分配的内存区域。unique是指唯一,不能复制一个unique_ptr指针&#…

【H3C】Console口密码配置

配置方法 console口密码主要配置 line con0 //进入con0用户线视图 #line aux0 //S5024X-EI使用该命令进入用户视图 authentication-mode password //认证模式为密码模式,其他还有无密码和…

普通BUG

IDEA包折叠 如果自动紧凑包名,则有些时候创建新包或类的时候不能达到想要的摆放层级关系,此时右上角搜索按钮搜hide middle,关掉紧凑即可,然后既可以每层一个包不折叠. 效果: 20240105println输出多个参数 int a 10;int b 20;报错println是可以输出多个参数的,但不支持直接用…

机器视觉系统选型-线阵工业相机选型

线阵相机特点: 1.线阵相机使用的线扫描传感器通常只有一行感光单元(少数彩色线阵使用三行感光单元的传感器) 2.线阵相机每次只采集一行图像; 3.线阵相机每次只输出一行图像; 4.与传统的面阵相机相比,面阵扫…

maven、springboot项目编译打包本地jar、第三方jar包

0. 引言 一般我们在maven项目中都是通过引入pom坐标的形式来引入第三方jar包,但某些场景下,第三方是直接提供的jar包文件,这就需要我们从本地引入第三方包并进行打包。所以我们今天来看下如何进行本地引入第三方包操作 1. 步骤 1、在项目下…

从零开始的神经网络框架搭建

一、抽象化的神经网络 对于一个神经网络来的运算流程来说,基本可以分为两部分:训练与预测。而训练的基本流程又包括:输入数据、计算并激活、计算损失、优化等步骤。正对应神经网络架构的输入层、计算层、激活层、损失计算、优化器&#xff1…

Rancher 单节点 docker 部署备份与恢复

Rancher 单节点 docker 部署备份与恢复 1. 备份集群 获取 rancher server 容器名,本例为 angry_aryabhata docker ps | grep rancher/rancher6a27b8634c80 rancher/rancher:v2.5.14 xxx angry_aryabhata停止容器 docker stop angry_aryabhata创建备…

Git原理与应用(三)远程操作

Git原理与应用[三]远程操作 一.远程仓库操作1.理解分布式版本控制系统2.远程仓库的创建3.远程仓库克隆到本地4.向远程仓库推送:push5.拉取远程仓库:pull 二.模拟进行多人协作开发1.准备工作2.多人协作11.多人协作开发1.Linux用户开发2.Windows用户开发 2.合并冲突3.分支合并4.小…