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正则匹配抓取豆瓣电影链接和评论代码分享
Dec 27 Python
python实现文件名批量替换和内容替换
Mar 20 Python
python optparse模块使用实例
Apr 09 Python
Python中的os.path路径模块中的操作方法总结
Jul 07 Python
Python常用库推荐
Dec 04 Python
python使用tensorflow深度学习识别验证码
Apr 03 Python
Python3内置模块之base64编解码方法详解
Jul 13 Python
使用pyecharts生成Echarts网页的实例
Aug 12 Python
Python print不能立即打印的解决方式
Feb 19 Python
python多线程实现同时执行两个while循环的操作
May 02 Python
python实战之一步一步教你绘制小猪佩奇
Apr 22 Python
python高温预警数据获取实例
Jul 23 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基础学习笔记
2007/03/18 PHP
基于curl数据采集之单页面并行采集函数get_htmls的使用
2013/04/28 PHP
php获取随机数组列表的方法
2014/11/13 PHP
php计算年龄精准到年月日
2015/11/17 PHP
JQUERY实现左侧TIPS滑进滑出效果示例
2013/06/27 Javascript
jquery中的on方法使用介绍
2013/12/29 Javascript
使用jquery修改表单的提交地址基本思路
2014/06/04 Javascript
把文本中的URL地址转换为可点击链接的JavaScript、PHP自定义函数
2014/07/29 Javascript
javascript简单实现图片预加载
2014/12/03 Javascript
jQuery源码解读之addClass()方法分析
2015/02/20 Javascript
js简单实现表单中点击按钮动态增加输入框数量的方法
2015/08/18 Javascript
JS验证邮件地址格式方法小结
2015/12/01 Javascript
基于jquery实现省市区三级联动效果
2015/12/25 Javascript
常见的javascript跨域通信方法
2015/12/31 Javascript
原生js和jquery分别实现横向导航菜单效果
2016/05/13 Javascript
jQuery点击输入框显示验证码图片
2016/05/19 Javascript
兼容浏览器的js事件绑定函数(详解)
2017/05/09 Javascript
jquery基于layui实现二级联动下拉选择(省份城市选择)
2017/06/20 jQuery
vue数字类型过滤器的示例代码
2017/09/07 Javascript
JavaScript实现焦点进入文本框内关闭输入法的核心代码
2017/09/20 Javascript
微信小程序实现签到功能
2018/10/31 Javascript
Three.JS实现三维场景
2018/12/30 Javascript
vue实现两个组件之间数据共享和修改操作
2020/11/12 Javascript
python编程实现希尔排序
2017/04/13 Python
python实现车牌识别的示例代码
2019/08/05 Python
CSS3 transforms应用于背景图像的解决方法
2019/04/16 HTML / CSS
玖熙女鞋美国官网:Nine West
2016/10/06 全球购物
巴西电子、家电、智能手机购物网站:Girafa
2019/06/04 全球购物
英国健康和美容技术产品购物网站:CurrentBody
2019/07/17 全球购物
完美主义个人的自我评价
2014/02/17 职场文书
文明礼仪伴我行演讲稿
2014/05/12 职场文书
创文明城市标语
2014/06/16 职场文书
作风建设年度心得体会
2014/10/29 职场文书
电力工程合作意向书
2015/05/11 职场文书
十一月早安语录:把心放轻,人生就是一朵自在的云
2019/11/04 职场文书
mysql 子查询的使用
2022/04/28 MySQL