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在命令行下使用google翻译(带语音)
Jan 16 Python
跟老齐学Python之集成开发环境(IDE)
Sep 12 Python
PYTHON 中使用 GLOBAL引发的一系列问题
Oct 12 Python
Python制作词云的方法
Jan 03 Python
Python单元测试实例详解
May 25 Python
通过PYTHON来实现图像分割详解
Jun 26 Python
opencv python 图像轮廓/检测轮廓/绘制轮廓的方法
Jul 03 Python
Pytorch抽取网络层的Feature Map(Vgg)实例
Aug 20 Python
Python使用tkinter模块实现推箱子游戏
Oct 08 Python
python TK库简单应用(实时显示子进程输出)
Oct 29 Python
使用Python matplotlib作图时,设置横纵坐标轴数值以百分比(%)显示
May 16 Python
python3.7调试的实例方法
Jul 21 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
怎样辨别一杯好咖啡
2021/03/03 新手入门
PHP使用Alexa API获取网站的Alexa排名例子
2014/06/12 PHP
php将HTML表格每行每列转为数组实现采集表格数据的方法
2015/04/03 PHP
Yii实现文章列表置顶功能示例
2016/10/18 PHP
tp5框架前台无限极导航菜单类实现方法分析
2020/03/29 PHP
基于JQuery的简单实现折叠菜单代码
2010/09/15 Javascript
javascript中的注释使用与注意事项小结
2011/09/20 Javascript
jquery序列化表单以及回调函数的使用示例
2014/07/02 Javascript
探寻Javascript执行效率问题
2014/11/12 Javascript
Jquery实现地铁线路指示灯提示牌效果的方法
2015/03/02 Javascript
nw.js实现类似微信的聊天软件
2015/03/16 Javascript
Jquery实现弹性滑块滑动选择数值插件
2015/08/08 Javascript
jQuery实现鼠标滑过点击事件音效试听
2015/08/31 Javascript
jQuery Validate表单验证插件 添加class属性形式的校验
2016/01/18 Javascript
微信公众号  提示:Unauthorized API function 问题解决方法
2016/12/05 Javascript
ES6学习笔记之正则表达式和字符串正则方法分析
2017/04/25 Javascript
JavaScript设计模式之职责链模式应用示例
2018/08/07 Javascript
javascript实现计算器功能
2020/03/30 Javascript
python创建线程示例
2014/05/06 Python
Python中类型关系和继承关系实例详解
2015/05/25 Python
Python缩进和冒号详解
2016/06/01 Python
Python 闭包的使用方法
2017/09/07 Python
python 实现对文件夹中的图像连续重命名方法
2018/10/25 Python
python绘制简单彩虹图
2018/11/19 Python
Python3爬虫全国地址信息
2019/01/05 Python
django框架F&Q 聚合与分组操作示例
2019/12/12 Python
python enumerate内置函数用法总结
2020/01/07 Python
使用Python来做一个屏幕录制工具的操作代码
2020/01/18 Python
廉价连衣裙和婚纱礼服在线销售:Tbdress
2019/02/28 全球购物
中国领先的汽车保养服务平台:途虎养车
2019/10/18 全球购物
供货协议书
2014/04/22 职场文书
食品安全宣传标语
2014/06/07 职场文书
使用react+redux实现计数器功能及遇到问题
2021/06/02 Javascript
OpenCV中resize函数插值算法的实现过程(五种)
2021/06/05 Python
解析Java异步之call future
2021/06/14 Java/Android
教你如何使用Python开发一个钉钉群应答机器人
2021/06/21 Python