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之网站的结构
Oct 24 Python
在Debian下配置Python+Django+Nginx+uWSGI+MySQL的教程
Apr 25 Python
Python 逐行分割大txt文件的方法
Oct 10 Python
用Pygal绘制直方图代码示例
Dec 07 Python
在Python中给Nan值更改为0的方法
Oct 30 Python
Python3几个常见问题的处理方法
Feb 26 Python
使用django和vue进行数据交互的方法步骤
Nov 11 Python
基于Python中的yield表达式介绍
Nov 19 Python
python 画函数曲线示例
Dec 04 Python
Python 实现try重新执行
Dec 21 Python
scrapy框架携带cookie访问淘宝购物车功能的实现代码
Jul 07 Python
解决pytorch 模型复制的一些问题
Mar 03 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 empty()与isset()区别的详细介绍
2013/06/17 PHP
在wamp集成环境下升级php版本(实现方法)
2013/07/01 PHP
php+mysql开发的最简单在线题库(在线做题系统)完整案例
2019/03/30 PHP
纯CSS3实现质感细腻丝滑按钮
2021/03/09 HTML / CSS
javascript之水平横向滚动歌词同步的应用
2007/05/07 Javascript
Jquery 获得服务器控件值的方法小结
2010/05/11 Javascript
JavaScript性能优化 创建文档碎片(document.createDocumentFragment)
2010/07/13 Javascript
基于Jquery的跨域传输数据(JSONP)
2011/03/10 Javascript
jquery阻止冒泡事件使用模拟事件
2013/09/06 Javascript
模拟一个类似百度google的模糊搜索下拉列表
2014/04/15 Javascript
JavaScript使用DeviceOne开发实战(四)仿优酷视频应用
2015/12/02 Javascript
基于JavaScript实现添加到购物车效果附源码下载
2016/08/22 Javascript
div中文字内容溢出常见的解决方法
2017/03/16 Javascript
使用Node.js实现简易MVC框架的方法
2017/08/07 Javascript
基于node.js express mvc轻量级框架实践
2017/09/14 Javascript
react+ant design实现Table的增、删、改的示例代码
2018/12/27 Javascript
JS中比Switch...Case更优雅的多条件判断写法
2019/09/05 Javascript
微信小程序开发(一):服务器获取数据列表渲染操作示例
2020/06/01 Javascript
Vue中key的作用示例代码详解
2020/06/10 Javascript
原生js+canvas实现验证码
2020/11/29 Javascript
[03:46]DAC趣味视频-中文考试.mp4
2017/04/02 DOTA
python 获取本机ip地址的两个方法
2013/02/25 Python
Python中用PIL库批量给图片加上序号的教程
2015/05/06 Python
Python+树莓派+YOLO打造一款人工智能照相机
2018/01/02 Python
Python实现GUI学生信息管理系统
2020/04/05 Python
解决使用pycharm提交代码时冲突之后文件丢失找回的方法
2018/08/05 Python
Django框架HttpRequest对象用法实例分析
2019/11/01 Python
python离线安装外部依赖包的实现
2020/02/13 Python
html5教程实现Photoshop渐变色效果
2013/12/04 HTML / CSS
美国第一个网上卖鞋零售商:OnlineShoes.com
2017/09/24 全球购物
计算机专业优秀大学生自我总结
2014/01/21 职场文书
企业厂务公开实施方案
2014/03/26 职场文书
优秀共产党员演讲稿
2014/09/04 职场文书
县级领导干部开展党的群众路线教育实践活动工作汇报
2014/10/25 职场文书
新郎新娘答谢词
2015/01/04 职场文书
如何用PHP实现分布算法之一致性哈希算法
2021/05/26 PHP