在进行接口测试的时候,我们会调用多个接口发出多个请求,在这些请求中有时候需要保持一些共用的数据,例如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中requests库的用途-python中requests库session对象的妙用详解相关推荐

  1. python中session的使用方法_python中requests库session对象的妙用详解

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  2. 第7.26节 Python中的@property装饰器定义属性访问方法getter、setter、deleter 详解

    第7.26节 Python中的@property装饰器定义属性访问方法getter.setter.deleter 详解 一.    引言 Python中的装饰器在前面接触过,老猿还没有深入展开介绍装饰 ...

  3. [Python从零到壹] 四十七.图像增强及运算篇之腐蚀和膨胀详解

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  4. python整数池_对Python中小整数对象池和大整数对象池的使用详解

    1. 小整数对象池 整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间. Python 对小整数的定义是 [-5, 256] 这些整数对象是提 ...

  5. java 组合对象_Java 中组合模型之对象结构模式的详解

    Java 中组合模型之对象结构模式的详解 一.意图 将对象组合成树形结构以表示"部分-整体"的层次结构.Composite使得用户对单个对象和组合对象的使用具有一致性. 二.适用性 ...

  6. JAVA中的类和对象之this的详解

    系列文章目录 第一章 JAVA中的类和对象之this的详解 目录 前言 一.为什么要有this引用 二.this的三种用法 1.this.成员变量 2.this.成员方法 3.this()调用其它的构 ...

  7. python中requests库的用途-python中requests.session的妙用

    在进行接口测试的时候,我们会调用多个接口发出多个请求,在这些请求中有时候需要保持一些共用的数据,例如cookies信息. 1.requests库的session对象能够帮我们跨请求保持某些参数,也会在 ...

  8. Python中的yield关键字及表达式、生成器、生成器迭代器、生成器表达式详解

    文章目录 1. yield关键字及表达式.生成器.生成器迭代器.生成器表达式 1.1 yield关键字及表达式(yield expression) 1.1.1 yield关键字 1.1.2 yield ...

  9. python中可变参数*args传入函数时的存储方式为_python 中文读法详解Python函数可变参数定义及其参数传递方式...

    Python函数可变参数定义及其参数传递方式详解 python中 函数不定参数的定义形式如下 1. func(*args) 传入的参数为以元组形式存在args中,如: def func(*args): ...

最新文章

  1. 2021-07-30 自己垃圾场景数据集训练Bisenet网络
  2. leetcode 235. Lowest Common Ancestor of a Binary Search Tree | 235. 二叉搜索树的最近公共祖先(哈希表)
  3. [Java基础]自然排序Comparable的使用
  4. 书摘:35岁之前成功的12条黄金法则
  5. 机器学习-吴恩达-笔记-2-逻辑回归
  6. TensorFlow 2.0官方风格与设计模式指南
  7. 小学计算机期末评价方案,小学班级管理评价方案
  8. ncbi查找目的基因序列_如何用NCBI和uniprot数据库查找目的蛋白的氨基酸序列或目的基因的碱基序列...
  9. rtl8812bu网卡Linux驱动,Linux 安装 RTL8812AU 无线 USB 网卡驱动
  10. 深入理解WKWebView白屏
  11. Embodied Question Answering导读
  12. hadoop jar xxxx.jar 执行的流程
  13. java基础测试大集合 今天收罗精选一下Java题 适合小白挑战和新手回顾
  14. 物联网中射频技术的应用
  15. VMware : 处理器数量和每个处理器的核心数量
  16. 淘宝/天猫API接口,买家卖家订单信息获取
  17. 向日葵公主与驴的寓言故事
  18. 计算几何之用叉乘求多边形面积
  19. 查看linux文件工具,Linux基础命令-文本文件查看工具
  20. java 联系电话/证件号码脱敏处理

热门文章

  1. 简陋的会计凭证金额输入控件
  2. 数据挖掘技术简介[转]
  3. selenium环境搭建1
  4. FMS4.5( Adobe Flash Media Server4.5)流媒体服务器搭建
  5. 成功计算出文本类单词的概率
  6. iBatis学习网站推荐
  7. wcf服务和寄主的关系
  8. enum2str做为queryValue时的问题
  9. python从入门到精通pdf百度云下载-跟老齐学Python从入门到精通 电子版(pdf格式)...
  10. 最适合python程序员用的笔记本-作为一个Python程序员,电脑上应该具备哪些软件?...