python中requests库session对象的妙用详解


Posted in Python onOctober 30, 2017

在进行接口测试的时候,我们会调用多个接口发出多个请求,在这些请求中有时候需要保持一些共用的数据,例如cookies信息。

妙用1

requests库的session对象能够帮我们跨请求保持某些参数,也会在同一个session实例发出的所有请求之间保持cookies。
举个栗子,跨请求保持cookies,在命令行上输入下面命令:

# 创建一个session对象 
s = requests.Session() 
# 用session对象发出get请求,设置cookies 
s.get('http://httpbin.org/cookies/set/sessioncookie/123456789') 
# 用session对象发出另外一个get请求,获取cookies 
r = s.get("http://httpbin.org/cookies") 
# 显示结果 
r.text 
 '{"cookies": {"sessioncookie": "123456789"}}'

妙用2

requests库的session对象还能为我们提供请求方法的缺省数据,通过设置session对象的属性来实现。

举个栗子,设置请求的auth和headers默认的缺省参数:

# 创建一个session对象 
s = requests.Session() 
# 设置session对象的auth属性,用来作为请求的默认参数 
s.auth = ('user', 'pass') 
# 设置session的headers属性,通过update方法,将其余请求方法中的headers属性合并起来作为最终的请求方法的headers 
s.headers.update({'x-test': 'true'}) 
# 发送请求,这里没有设置auth会默认使用session对象的auth属性,这里的headers属性会与session对象的headers属性合并 
r = s.get('http://httpbin.org/headers', headers={'x-test2': 'true'}) 
# 查看发送请求的请求头 
r.request.headers

得到的请求头部是这样的:

{'Authorization': 'Basic dXNlcjpwYXNz', 'x-test': 'false'}

注意1:方法层的参数覆盖会话的参数,举个栗子:

将上面的请求中加上auth参数:

r = s.get('http://httpbin.org/headers', auth=('user','hah'), headers={'x-test2': 'true'})

获取该请求的请求头

{'Authorization': 'Basic dXNlcjpoYWg=', 'x-test': 'false'}

我们发现,请求方法中的Authorization变化了,也就是说方法层的参数覆盖了session的属性。

注意2:在request请求中,省略session对象中设置的属性,只需简单地在方法层参数中将那个键的值设置为 None ,那个键就会被自动省略掉。

再举个栗子:

TBD

总结

以上就是本文关于python中requests库session对象的妙用详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:Python面向对象编程基础解析(一)、13个最常用的Python深度学习库介绍等,有什么问题可以随时留言,小编会及时回复大家的。

Python 相关文章推荐
Python实现快速排序算法及去重的快速排序的简单示例
Jun 26 Python
Python+MongoDB自增键值的简单实现
Nov 04 Python
Python 利用内置set函数对字符串和列表进行去重的方法
Jun 29 Python
python实现机器学习之多元线性回归
Sep 06 Python
Python3使用TCP编写一个简易的文件下载器功能
May 08 Python
Python中的引用知识点总结
May 20 Python
Python 实现还原已撤回的微信消息
Jun 18 Python
Python中那些 Pythonic的写法详解
Jul 02 Python
python pip源配置,pip配置文件存放位置的方法
Jul 12 Python
在python3中使用shuffle函数要注意的地方
Feb 28 Python
安装并免费使用Pycharm专业版(学生/教师)
Sep 24 Python
Python 解决空列表.append() 输出为None的问题
May 23 Python
Python编程之黑板上排列组合,你舍得解开吗
Oct 30 #Python
Python数据结构与算法之列表(链表,linked list)简单实现
Oct 30 #Python
Python进程间通信之共享内存详解
Oct 30 #Python
import的本质解析
Oct 30 #Python
python中hashlib模块用法示例
Oct 30 #Python
浅谈Python由__dict__和dir()引发的一些思考
Oct 30 #Python
Android分包MultiDex策略详解
Oct 30 #Python
You might like
PHP写的加密函数,支持私人密钥(详细介绍)
2013/06/09 PHP
JavaScript加密解密7种方法总结分析
2007/10/07 Javascript
Js 获取HTML DOM节点元素的方法小结
2009/04/24 Javascript
flash调用js中的方法,让js传递变量给flash的办法及思路
2013/08/07 Javascript
jquery 日期控件datepicker属性详细解析
2013/11/08 Javascript
Javascript玩转继承(二)
2014/05/08 Javascript
由浅入深讲解Javascript继承机制与simple-inheritance源码分析
2015/12/13 Javascript
javascript实现全角转半角的方法
2016/01/23 Javascript
单击按钮发送验证码,出现倒计时的简单实例
2017/03/17 Javascript
基于Vue实现timepicker
2017/04/25 Javascript
Javascript实现找不同色块的游戏
2017/07/17 Javascript
js实现简单数字变动效果
2017/11/06 Javascript
JavaScript执行环境及作用域链实例分析
2018/08/01 Javascript
vue3.0 CLI - 2.2 - 组件 home.vue 的初步改造
2018/09/14 Javascript
微信小程序 JS动态修改样式的实现方法
2018/12/16 Javascript
原生js实现移动小球(碰撞检测)
2020/12/17 Javascript
[03:54]Ehome出征西雅图 回顾2016国际邀请赛晋级之路
2016/08/02 DOTA
Python实现快速计算词频功能示例
2018/06/25 Python
用python一行代码得到数组中某个元素的个数方法
2019/01/28 Python
搞清楚 Python traceback的具体使用方法
2019/05/13 Python
快速查找Python安装路径方法
2020/02/06 Python
matlab中二维插值函数interp2的使用详解
2020/04/22 Python
matlab、python中矩阵的互相导入导出方式
2020/06/01 Python
区分python中的进程与线程
2020/08/13 Python
python+selenium 简易地疫情信息自动打卡签到功能的实现代码
2020/08/22 Python
python解压zip包中文乱码解决方法
2020/11/27 Python
python Scrapy框架原理解析
2021/01/04 Python
Manuka Doctor美国官网:麦卢卡蜂蜜和蜂毒护肤
2016/12/25 全球购物
毕业生就业自荐书
2013/12/15 职场文书
《荷花》教学反思
2014/04/16 职场文书
基本公共卫生服务健康教育工作方案
2014/05/22 职场文书
2014年党建工作汇报材料
2014/11/02 职场文书
2014年减负工作总结
2014/12/10 职场文书
因家庭原因离职的辞职信范文
2015/05/12 职场文书
2016年元旦寄语
2015/08/17 职场文书
Spring IOC容器Bean的作用域及生命周期实例
2022/05/30 Java/Android