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 05 Python
Python实现的RSS阅读器实例
Jul 25 Python
使用Nginx+uWsgi实现Python的Django框架站点动静分离
Mar 21 Python
ubuntu安装mysql pycharm sublime
Feb 20 Python
python如何派生内置不可变类型并修改实例化行为
Mar 21 Python
pandas DataFrame实现几列数据合并成为新的一列方法
Jun 08 Python
Python使用sqlalchemy模块连接数据库操作示例
Mar 13 Python
Python 中的参数传递、返回值、浅拷贝、深拷贝
Jun 25 Python
python-OpenCV 实现将数组转换成灰度图和彩图
Jan 09 Python
浅谈sklearn中predict与predict_proba区别
Jun 28 Python
详解Python中的文件操作
Jan 14 Python
Python OpenCV形态学运算示例详解
Apr 07 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
曾在DC漫画界反派角色扮演的演员,谁才是你心目中的小丑之王?
2020/04/09 欧美动漫
关于PHP中的Class的几点个人看法
2006/10/09 PHP
PHP用strstr()函数阻止垃圾评论(通过判断a标记)
2013/09/28 PHP
PHP使用curl制作简易百度搜索
2016/11/03 PHP
php+mysql+jquery实现简易的检索自动补全提示功能
2017/04/15 PHP
PHP7导出Excel报ERR_EMPTY_RESPONSE解决方法
2019/04/16 PHP
从JavaScript的函数重名看其初始化方式
2007/03/08 Javascript
JS注释所产生的bug 即使注释也会执行
2013/11/19 Javascript
解析JSON对象与字符串之间的相互转换
2013/12/18 Javascript
基于jquery的simpleValidate简易验证插件
2014/01/31 Javascript
js实现select组件的选择输入过滤代码
2014/10/14 Javascript
javascript使用正则表达式检测IP地址
2014/12/03 Javascript
jQuery 循环遍历改变a标签的href(实例讲解)
2017/07/12 jQuery
Bootstrap 3多级下拉菜单实例
2017/11/23 Javascript
Webpack devServer中的 proxy 实现跨域的解决
2018/06/15 Javascript
JavaScript实现点击自制菜单效果
2021/02/02 Javascript
使用python装饰器验证配置文件示例
2014/02/24 Python
Python入门之modf()方法的使用
2015/05/15 Python
Python3实现发送QQ邮件功能(html)
2017/12/15 Python
Python3匿名函数用法示例
2018/07/25 Python
python使用selenium实现批量文件下载
2019/03/11 Python
Python中list循环遍历删除数据的正确方法
2019/09/02 Python
使用PyOpenGL绘制三维坐标系实例
2019/12/24 Python
利用jupyter网页版本进行python函数查询方式
2020/04/14 Python
python 实现全球IP归属地查询工具
2020/12/18 Python
JBL英国官网:JBL UK
2018/07/04 全球购物
医院护士求职自荐信格式
2013/09/21 职场文书
毕业生自我鉴定范文
2013/11/08 职场文书
应届生法律顾问求职信
2013/11/19 职场文书
工程管理专业毕业生自荐信
2014/01/24 职场文书
物流业务员岗位职责
2014/02/08 职场文书
大二法英学生职业生涯规划范文
2014/02/27 职场文书
2014年政教处工作总结
2014/12/20 职场文书
研究生毕业论文导师评语
2014/12/31 职场文书
六五普法先进个人主要事迹材料
2015/11/03 职场文书
2016大学生暑期三下乡心得体会
2016/01/23 职场文书