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中with语句的用法
Apr 15 Python
python开启多个子进程并行运行的方法
Apr 18 Python
Django的信号机制详解
May 05 Python
Python中最大最小赋值小技巧(分享)
Dec 23 Python
python matplotlib 在指定的两个点之间连线方法
May 25 Python
Python列表常见操作详解(获取,增加,删除,修改,排序等)
Feb 18 Python
使用Python制作简单的小程序IP查看器功能
Apr 16 Python
python按键按住不放持续响应的实例代码
Jul 17 Python
springboot配置文件抽离 git管理统 配置中心详解
Sep 02 Python
Python模块相关知识点小结
Mar 09 Python
使用Python将xmind脑图转成excel用例的实现代码(一)
Oct 12 Python
python四个坐标点对图片区域最小外接矩形进行裁剪
Jun 04 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调用Twitter的RSS的实现代码
2010/03/10 PHP
PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
2016/09/11 PHP
实例讲解PHP页面静态化
2018/02/05 PHP
php多进程中的阻塞与非阻塞操作实例分析
2020/03/04 PHP
jquery移除button的inline onclick事件(已测试及兼容浏览器)
2013/01/25 Javascript
js获得当前系统日期时间的方法
2015/05/06 Javascript
jquery右下角自动弹出可关闭的广告层
2015/05/08 Javascript
JavaScript获取两个数组交集的方法
2015/06/09 Javascript
ajax如何实现页面局部跳转与结果返回
2015/08/24 Javascript
Js制作点击输入框时默认文字消失的效果
2015/09/05 Javascript
详解JavaScript数组的操作大全
2015/10/19 Javascript
利用Jasmine对Angular进行单元测试的方法详解
2017/06/12 Javascript
jQuery实现带3D切割效果的轮播图功能示例【附源码下载】
2019/04/04 jQuery
vue增加强缓存和版本号的实现方法
2019/05/01 Javascript
详解使用WebPack搭建React开发环境
2019/08/06 Javascript
jQuery实现消息弹出框效果
2019/12/10 jQuery
详解JavaScript数据类型和判断方法
2020/09/04 Javascript
python基于mysql实现的简单队列以及跨进程锁实例详解
2014/07/07 Python
详解Python操作RabbitMQ服务器消息队列的远程结果返回
2016/06/30 Python
Python Tkinter实现简易计算器功能
2018/01/30 Python
对python3中, print横向输出的方法详解
2019/01/28 Python
Python 20行简单实现有道在线翻译的详解
2019/05/15 Python
numpy.where() 用法详解
2019/05/27 Python
CSS3教程(2):网页边框半径和网页圆角
2009/04/02 HTML / CSS
瑞典领先的汽车零部件网上零售商:bildelaronline24.se
2017/01/12 全球购物
卡西欧G-SHOCK英国官网: 防水防震手表
2018/01/08 全球购物
初三政治教学反思
2014/01/30 职场文书
市场营销大学生职业规划书
2014/02/25 职场文书
教师先进工作者事迹材料
2014/05/01 职场文书
爱国主义教育基地观后感
2015/06/18 职场文书
护士旷工检讨书
2015/08/15 职场文书
2016党员读书思廉心得体会
2016/01/23 职场文书
初一语文教学反思
2016/03/03 职场文书
浅谈PHP7中的一些小技巧
2021/05/29 PHP
vue的项目如何打包上线
2022/04/13 Vue.js
Linux在两个服务器直接传文件的操作方法
2022/08/05 Servers