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生成pdf文件的方法
Aug 04 Python
Python中的tuple元组详细介绍
Feb 02 Python
Django+Ajax+jQuery实现网页动态更新的实例
May 28 Python
对numpy中的transpose和swapaxes函数详解
Aug 02 Python
Python 实现两个服务器之间文件的上传方法
Feb 13 Python
python pexpect ssh 远程登录服务器的方法
Feb 14 Python
详解Python的数据库操作(pymysql)
Apr 04 Python
python多线程下信号处理程序示例
May 31 Python
解决Pytorch训练过程中loss不下降的问题
Jan 02 Python
Python中的X[:,0]、X[:,1]、X[:,:,0]、X[:,:,1]、X[:,m:n]和X[:,:,m:n]
Feb 13 Python
Matplotlib使用Cursor实现UI定位的示例代码
Mar 12 Python
使用Nibabel库对nii格式图像的读写操作
Jul 01 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长字符串定义方法
2012/07/12 PHP
PHP中的类型约束介绍
2015/05/11 PHP
WordPress中用于检索模版的相关PHP函数使用解析
2015/12/15 PHP
ThinkPHP5与单元测试PHPUnit使用详解
2020/02/23 PHP
详谈javascript中的cookie
2015/06/03 Javascript
javascript框架设计之种子模块
2015/06/23 Javascript
javascript中错误使用var造成undefined
2016/03/31 Javascript
AngularJS学习笔记之依赖注入详解
2016/05/16 Javascript
Bootstrap框架的学习教程详解(二)
2016/10/18 Javascript
easyui导出excel无法弹出下载框的快速解决方法
2016/11/10 Javascript
微信小程序开发之从相册获取图片 使用相机拍照 本地图片上传
2017/04/18 Javascript
详解node Async/Await 更好的异步编程解决方案
2018/05/10 Javascript
vue遍历生成的输入框 绑定及修改值示例
2019/10/30 Javascript
JS如何实现手机端输入验证码效果
2020/05/13 Javascript
原生js+css实现tab切换功能
2020/09/17 Javascript
[01:34]2014DOTA2展望TI 剑指西雅图VG战队专访
2014/06/30 DOTA
[47:53]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#2COL VS Spirit
2016/03/02 DOTA
[02:23]1个至宝=115个英雄特效 最“绿”至宝拉比克“魔导师密钥”登场
2018/12/29 DOTA
Python标准库之随机数 (math包、random包)介绍
2014/11/25 Python
python获取指定路径下所有指定后缀文件的方法
2015/05/26 Python
Python通过命令开启http.server服务器的方法
2017/11/04 Python
详解python3中zipfile模块用法
2018/06/18 Python
python 解决动态的定义变量名,并给其赋值的方法(大数据处理)
2018/11/10 Python
PyQt4实时显示文本内容GUI的示例
2019/06/14 Python
PyQt5 QListWidget选择多项并返回的实例
2019/06/17 Python
Python3视频转字符动画的实例代码
2019/08/29 Python
Python语法垃圾回收机制原理解析
2020/03/25 Python
使用Python对Dicom文件进行读取与写入的实现
2020/04/20 Python
一份软件工程师的面试试题
2016/02/01 面试题
实习生个人的自我评价
2013/12/08 职场文书
国际贸易毕业生求职信
2014/07/20 职场文书
单位接收函范文
2015/01/30 职场文书
2015年世界环境日演讲稿
2015/03/18 职场文书
《观察物体》教学反思
2016/02/17 职场文书
Python 数据科学 Matplotlib图库详解
2021/07/07 Python
Python经常使用的一些内置函数
2022/04/11 Python