使用Python的requests库进行接口测试——session对象的妙用
from:http://blog.csdn.net/liuchunming033/article/details/48131051
在进行接口测试的时候,我们会调用多个接口发出多个请求,在这些请求中有时候需要保持一些共用的数据,例如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的requests库作接口测试——请求对象与响应对象
任何时候调用requests.*()操作接口时,我们都在做两件事情: 1.构建一个Request对象,该对象被发送到服务器去请求或查询一些资源: 2.一旦requests得到一个从服务器返回的响应,就 ...
- 使用Python的requests库作接口测试——对HTTP动词的支持
Requests提供了几乎所有HTTP动词的功能:GET,OPTIONS, HEAD,POST,PUT,PATCH和DELETE. 动词GET-查看提交信息 HTTP GET是一个幂等的方法,从给定的 ...
- 用Python的requests库作接口测试——对响应进行迭代
使用 requests.Response.iter_lines() 方法,可以很方便地对流式API(例如 Twitter的流式API )的响应进行迭代. 简单地设置 stream 为 True 便可以 ...
- 用Python的requests库作接口测试——上传文件
POST一个多部分编码(Multipart-Encoded)的文件 Requests使得上传多部分编码文件变得很简单: >>> url = 'http://httpbin.org/p ...
- 【转】使用Python的Requests库进行web接口测试
原文地址:使用Python的Requests库进行web接口测试 1.Requests简介 Requests 是使用 Apache2 Licensed 许可证的 HTTP 库.用 Python 编写, ...
- requests库写接口测试框架初学习
学习网址: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-dscpm/ff75b907-415d-4220-89 ...
- python中requests库使用方法详解
目录 python中requests库使用方法详解 官方文档 什么是Requests 安装Requests库 基本的GET请求 带参数的GET请求 解析json 添加headers 基本POST请求 ...
- python 之Requests库学习笔记
1. Requests库安装 Windows平台安装说明: 直接以管理员身份打开cmd运行界面,使用pip管理工具进行requests库的安装. 具体安装命令如下: >pip instal ...
- Python爬虫—requests库get和post方法使用
目录 Python爬虫-requests库get和post方法使用 1. 安装requests库 2.requests.get()方法使用 3.requests.post()方法使用-构造formda ...
随机推荐
- 动态链接库(DLL)编写经验
我首先说明DLL的生成方法,之后再补充一些特殊之处. 生成方法: 1.对需要导出的类,在头文件中添加 #ifdef CLASS _API #define CLASS_API _declspec(dll ...
- STM32小结
1.GPIO 电灯 推挽输出 PB5 2.GPIO 按键 浮空输入 PA0 3.写IO高电平 HAL_GPIO_WritePin(GPIOB,GPIO_Pin_5,1); 4.读取IO电平 HAL_G ...
- 图tp delDataById问题
- dede 你所上传的软件类型不在许可列表,请更改系统对扩展名限定的配置
后台,系统,系统基本参数,附件设置格式
- php 类的相互访问
========================================================================================== // public ...
- struts异常:No result defined for action
问题描述: No result defined for action com.freedom.funitureCityPSIMS.controller.login.CheckAction and re ...
- 【JMedia】诺贝尔奖得主:东亚教育浪费了太多生命
10月3日,2016年诺贝尔奖开奖第一天,日本科学家大隅良典获得诺贝尔生理学或医学奖.进入21世纪,日本科学家获奖人数快速增长.包括物理奖8位.化学奖6位.生理学或医学奖3位,共计17位,平均下来差不 ...
- 2017-07-10(lastlog rpm yum)
lastlog 查看所有用户最后一次登录的时间 rpm www.rpmfind.net 用来确认函数库需要安装哪个依赖程序的的网站 rpm -ivh 包全名 (安装) rpm -Uvh 包全名( ...
- 2017-06-28(passwd 主要组与附属组 gpasswd newgrp groups)
passwd passwd -l 用户名 (锁定用户) passwd -u 用户名 (解锁用户) passwd -d 用户名 (清楚用户密码) 主要组与附属组 一个用户可以同时属于多个组,其中一个 ...
- JAVA中限制接口流量、并发的方法
JAVA中限制接口流量可以通过Guava的RateLimiter类或者JDK自带的Semaphore类来实现,两者有点类似,但是也有区别,要根据实际情况使用.简单来说, RateLimiter类是控制 ...