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解决字典中的值是列表问题的方法
Mar 04 Python
python 获取当天每个准点时间戳的实例
May 22 Python
python绘制立方体的方法
Jul 02 Python
python3.6利用pyinstall打包py为exe的操作实例
Oct 31 Python
Pythony运维入门之Socket网络编程详解
Apr 15 Python
Python发展简史 Python来历
May 14 Python
Python使用random模块生成随机数操作实例详解
Sep 17 Python
python实现超市商品销售管理系统
Nov 22 Python
给keras层命名,并提取中间层输出值,保存到文档的实例
May 23 Python
Python如何脚本过滤文件中的注释
May 27 Python
Keras:Unet网络实现多类语义分割方式
Jun 11 Python
python 读取.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文件夹的创建与删除方法
2015/01/24 PHP
PHP魔术方法的使用示例
2015/06/23 PHP
客户端脚本中常常出现的一些问题和调试技巧
2007/01/09 Javascript
5 cool javascript apps
2007/03/24 Javascript
初学Javascript的一些总结
2008/11/03 Javascript
仿迅雷焦点广告效果(JQuery版)
2008/11/19 Javascript
url地址自动加#号问题说明
2010/08/21 Javascript
JS 退出系统并跳转到登录界面的实现代码
2013/06/29 Javascript
JS小功能(checkbox实现全选和全取消)实例代码
2013/11/28 Javascript
jquery、js操作checkbox全选反选
2014/03/12 Javascript
JavaScript中this详解
2015/09/01 Javascript
WebSocket实现简单客服聊天系统
2017/05/12 Javascript
vue 2.0 购物车小球抛物线的示例代码
2018/02/01 Javascript
解决layui轮播图有数据不显示的情况
2019/09/16 Javascript
vue框架制作购物车小球动画效果实例代码
2019/09/26 Javascript
vue keep-alive列表页缓存 详情页返回上一页不刷新,定位到之前位置
2019/11/26 Javascript
JavaScript array常用方法代码实例详解
2020/09/02 Javascript
[46:32]Fnatic vs OG 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python多线程结合队列下载百度音乐的方法
2015/07/27 Python
Linux下为不同版本python安装第三方库
2016/08/31 Python
Python 中urls.py:URL dispatcher(路由配置文件)详解
2017/03/24 Python
Python复制Word内容并使用格式设字体与大小实例代码
2018/01/22 Python
Python实现确认字符串是否包含指定字符串的实例
2018/05/02 Python
Python判断对象是否相等及eq函数的讲解
2019/02/25 Python
Python字典中的值为列表或字典的构造实例
2019/12/16 Python
python模式 工厂模式原理及实例详解
2020/02/11 Python
Python做图像处理及视频音频文件分离和合成功能
2020/11/24 Python
周生生珠宝香港官网:Chow Sang Sang(香港及海外配送)
2019/09/05 全球购物
质检员岗位职责
2013/12/17 职场文书
服装设计专业自荐书范文
2013/12/30 职场文书
员工培训邀请函
2014/01/11 职场文书
数字化校园建设方案
2014/05/03 职场文书
求职信格式要求
2014/05/23 职场文书
小学英语听课心得体会
2016/01/14 职场文书
PO模式在selenium自动化测试框架的优势
2022/03/20 Python
Django框架模板用法详解
2022/06/10 Python