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中关于字符串对象的一些基础知识
Apr 08 Python
在Python的while循环中使用else以及循环嵌套的用法
Oct 14 Python
Python的组合模式与责任链模式编程示例
Feb 02 Python
python 实现在txt指定行追加文本的方法
Apr 29 Python
使用pandas将numpy中的数组数据保存到csv文件的方法
Jun 14 Python
Python Requests库基本用法示例
Aug 20 Python
pytorch 彩色图像转灰度图像实例
Jan 13 Python
python中的itertools的使用详解
Jan 13 Python
Python常用模块函数代码汇总解析
Aug 31 Python
numpy实现RNN原理实现
Mar 02 Python
解决Jupyter-notebook不弹出默认浏览器的问题
Mar 30 Python
理解深度学习之深度学习简介
Apr 14 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 mkdir()定义和用法
2009/01/14 PHP
php入门学习知识点三 PHP上传
2011/07/14 PHP
PHP不用递归实现无限分级的例子分享
2014/04/18 PHP
让CodeIgniter数据库缓存自动过期的处理的方法
2014/06/12 PHP
php如何获取文件的扩展名
2015/10/28 PHP
在PHP语言中使用JSON和将json还原成数组的方法
2016/07/19 PHP
PHP实现数组的笛卡尔积运算示例
2017/12/15 PHP
Yii框架学习笔记之session与cookie简单操作示例
2019/04/30 PHP
学习YUI.Ext 第二天
2007/03/10 Javascript
基于JQuery实现相同内容合并单元格的代码
2011/01/12 Javascript
nodejs导出excel的方法
2015/06/30 NodeJs
使用snowfall.jquery.js实现爱心满屏飞的效果
2017/01/05 Javascript
angularJS模态框$modal实例代码
2017/05/27 Javascript
input 标签实现输入框带提示文字效果(两种方法)
2017/10/09 Javascript
使用JS实现导航切换时高亮显示的示例讲解
2018/08/22 Javascript
又拍云 Node.js 实现文件上传、删除功能
2018/10/28 Javascript
使用pm2部署node生产环境的方法步骤
2019/03/09 Javascript
jqGrid表格底部汇总、合计行footerrow处理
2019/08/21 Javascript
微信小程序自定义tabbar custom-tab-bar 6s出不来解决方案(cover-view不兼容)
2019/11/01 Javascript
typescript配置alias的详细步骤
2020/08/12 Javascript
Python开发WebService系列教程之REST,web.py,eurasia,Django
2014/06/30 Python
python定时执行指定函数的方法
2015/05/27 Python
Python3实现统计单词表中每个字母出现频率的方法示例
2019/01/28 Python
python制作英语翻译小工具代码实例
2019/09/09 Python
python连接PostgreSQL过程解析
2020/02/09 Python
Python用类实现扑克牌发牌的示例代码
2020/06/01 Python
CSS3实现任意图片lowpoly动画效果实例
2017/05/11 HTML / CSS
css3中背景尺寸background-size详解
2014/09/02 HTML / CSS
详解canvas绘图时遇到的跨域问题
2018/03/22 HTML / CSS
欧洲最大的婴幼儿服装及内衣公司:Petit Bateau(小帆船)
2016/08/16 全球购物
Myprotein蛋白粉美国官网:欧洲畅销运动营养品牌
2016/11/15 全球购物
英国奢侈品网站:MatchesFashion
2016/12/16 全球购物
消防志愿者活动方案
2014/08/23 职场文书
水电工岗位职责
2015/02/14 职场文书
《小小的船》教学反思
2016/02/18 职场文书
td 内容自动换行 table表格td设置宽度后文字太多自动换行
2022/12/24 HTML / CSS