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操作mongodb根据_id查询数据的实现方法
May 20 Python
Python内建函数之raw_input()与input()代码解析
Oct 26 Python
Python3简单实例计算同花的概率代码
Dec 06 Python
Python引用计数操作示例
Aug 23 Python
对PyQt5基本窗口控件 QMainWindow的使用详解
Jun 19 Python
基于Python获取城市近7天天气预报
Nov 26 Python
vue学习笔记之动态组件和v-once指令简单示例
Feb 29 Python
Softmax函数原理及Python实现过程解析
May 22 Python
用python实现名片管理系统
Jun 18 Python
Python gevent协程切换实现详解
Sep 14 Python
python sleep和wait对比总结
Feb 03 Python
Python爬虫基础之爬虫的分类知识总结
May 13 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 读取文件乱码问题
2010/02/20 PHP
PHP设计模式之命令模式的深入解析
2013/06/13 PHP
Yii实现MySQL多数据库和读写分离实例分析
2014/12/03 PHP
PHP实现股票趋势图和柱形图
2015/02/07 PHP
PHP获取毫秒级时间戳的方法
2015/04/15 PHP
php使用MySQL保存session会话的方法
2015/06/18 PHP
Json2Template.js 基于jquery的插件 绑定JavaScript对象到Html模板中
2011/10/29 Javascript
js获得参数的getParameter使用示例
2014/02/26 Javascript
如何将php数组或者对象传递给javascript
2014/03/20 Javascript
jquery 扑捉回车键事件代码
2014/04/24 Javascript
单击某一段文字改写文本颜色
2014/06/06 Javascript
原生JS实现响应式瀑布流布局
2015/04/02 Javascript
Angular2 多级注入器详解及实例
2016/10/30 Javascript
jQuery实现联动下拉列表查询框
2017/01/04 Javascript
Angular父组件调用子组件的方法
2018/04/02 Javascript
vue表单中遍历表单操作按钮的显示隐藏示例
2019/10/30 Javascript
解决新建一个vue项目过程中遇到的问题
2020/10/22 Javascript
vue实现列表拖拽排序的功能
2020/11/02 Javascript
python2.7的编码问题与解决方法
2016/10/04 Python
Python PyQt4实现QQ抽屉效果
2018/04/20 Python
pycharm debug功能实现跳到循环末尾的方法
2018/11/29 Python
Python API 自动化实战详解(纯代码)
2019/06/11 Python
python 密码学示例——凯撒密码的实现
2020/09/21 Python
internal修饰符起什么作用
2013/12/16 面试题
硅酸盐工业控制专业应届生求职信
2013/11/02 职场文书
移动通信专业自荐信范文
2013/11/12 职场文书
学生励志演讲稿
2014/01/06 职场文书
优秀经理获奖感言
2014/03/04 职场文书
《回乡偶书》教学反思
2014/04/12 职场文书
交通事故调解协议书
2014/04/16 职场文书
软件项目经理岗位职责
2015/04/01 职场文书
2015年医生个人工作总结
2015/04/25 职场文书
开学随笔
2015/08/15 职场文书
2016大一新生军训感言
2015/12/08 职场文书
入伍志愿书怎么写?
2019/07/19 职场文书
详细介绍Next.js脚手架完整搭建封装
2022/04/26 Javascript