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基础教程之常用运算符
Aug 29 Python
python中matplotlib实现最小二乘法拟合的过程详解
Jul 11 Python
Django利用cookie保存用户登录信息的简单实现方法
May 27 Python
python pickle存储、读取大数据量列表、字典数据的方法
Jul 07 Python
简单了解python的内存管理机制
Jul 08 Python
Python循环中else,break和continue的用法实例详解
Jul 11 Python
Flask中endpoint的理解(小结)
Dec 11 Python
django admin管理工具自定义时间区间筛选器DateRangeFilter介绍
May 19 Python
Django中ORM找出内容不为空的数据实例
May 20 Python
Python读取Excel数据并生成图表过程解析
Jun 18 Python
Python eval函数原理及用法解析
Nov 14 Python
Python使用mitmproxy工具监控手机 下载手机小视频
Apr 18 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
smarty+adodb+部分自定义类的php开发模式
2006/12/31 PHP
PHP 木马攻击防御技巧
2009/06/13 PHP
PHP邮件发送类PHPMailer用法实例详解
2014/09/22 PHP
php开启与关闭错误提示适用于没有修改php.ini的权限
2014/10/16 PHP
Yii分页用法实例详解
2014/12/04 PHP
Prototype 工具函数 学习
2009/07/23 Javascript
JqGrid web打印实现代码
2011/05/31 Javascript
jQuery插件ajaxFileUpload实现异步上传文件效果
2015/04/14 Javascript
基于socket.io+express实现多房间聊天
2016/03/17 Javascript
gulp-uglify 与gulp.watch()配合使用时报错(重复压缩问题)
2016/08/24 Javascript
JavaScript中push(),join() 函数 实例详解
2016/09/06 Javascript
Vue 2.X的状态管理vuex记录详解
2017/03/23 Javascript
通过构造函数实例化对象的方法
2017/06/28 Javascript
Vue2.0 vue-source jsonp 跨域请求
2017/08/04 Javascript
Cropper.js 实现裁剪图片并上传(PC端)
2017/08/20 Javascript
深入理解Vue2.x的虚拟DOM diff原理
2017/09/27 Javascript
Vue中的slot使用插槽分发内容的方法
2018/03/01 Javascript
对vue 键盘回车事件的实例讲解
2018/08/25 Javascript
vue 动态添加class,三个以上的条件做判断方式
2020/11/02 Javascript
微信小程序基于ColorUI构建皮皮虾短视频去水印组件
2020/11/04 Javascript
[01:00:14]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant BO3 第二场 2月28日
2021/03/11 DOTA
使用Python的Flask框架来搭建第一个Web应用程序
2016/06/04 Python
关于Django ForeignKey 反向查询中filter和_set的效率对比详解
2018/12/15 Python
pytorch打印网络结构的实例
2019/08/19 Python
Python3 文章标题关键字提取的例子
2019/08/26 Python
python 实现兔子生兔子示例
2019/11/21 Python
html5 canvas绘制网络字体的常用方法
2019/08/26 HTML / CSS
英国伦敦的睡衣品牌:Asceno
2019/10/06 全球购物
资产评估专业大学生求职信
2013/09/29 职场文书
开学典礼决心书
2014/03/11 职场文书
中国梦口号
2014/06/13 职场文书
小区门卫的岗位职责
2014/09/26 职场文书
教师个人年度总结
2015/02/11 职场文书
大学生支教感言
2015/08/01 职场文书
TensorFlow中tf.batch_matmul()的用法
2021/06/02 Python
Go语言怎么使用变长参数函数
2022/07/15 Golang