Jmeter系列(49)- 详解 HTTP Cookie 管理器
- 2020 年 8 月 19 日
- 筆記
- Jmeter, 测试高级进阶技能系列 - Jmeter
如果你想从头学习Jmeter,可以看看这个系列的文章哦
//www.cnblogs.com/poloyy/category/1746599.html
简单介绍
功能一
- 首先,它像网络浏览器一样存储和发送 cookie
- 如果有一个HTTP请求,并且响应包含 cookie,则 cookie 管理器会自动存储该 cookie,并将其用于后面对该特定网站的所有请求
- cookie 管理自动存储的 cookie 不会出现在 Cookie Manager 的界面上,但是可以使用通过查看结果树看到它
功能二
- JMeter 会检查收到的 Cookie 是否对该URL有效,这意味着不会存储跨域 Cookie
- 如果有错误的行为或希望使用跨域cookie,请定义 JMeter 属性
CookieManager.check.cookies = false
功能三
- 收到的 Cookies 可以自动存储为 JMeter 线程变量
- 要将 cookie 保存为变量,请定义 JMeter属性
CookieManager.save.cookies = true
- Cookie 自动存储为 Jmeter 线程变量的名称前缀默认是 COOKIE_
- 如果要自定义前缀可以修改 Jmeter 属性 CookieManager.name.prefix = ****
功能四
- 可以将 Cookie 手动添加到 Cookie Manager
- 自定义 Cookie 将被所有 JMeter 线程共享
- 自定义 Cookie 的过期时间会很长
功能五
- 默认情况下,空值的 Cookies 被忽略
- 可以通过设置 JMeter 属性来更改此设置 CookieManager.delete_null_cookies = false
HTTP Cookie Manager
HTTP Cookie Manager 界面介绍
字段介绍
单次循环实际栗子
项目背景
- 一个登录接口,一个添加课程接口
- 登录接口响应会返回一个Set-cookie,包含一个 sessionid,相当于用户凭证
- 发送添加课程接口需要传递包含 sessionid 的 Cookie 才能请求成功
Jmeter 属性设置(jmeter.properties 文件)
线程组结构树
整体逻辑:登录请求成功响应后,HTTP Cookie 管理器会自动存储登录接口返回的 Cookie,后面的请求也能自动调用该 Cookie
线程组属性
HTTP Cookie 管理器
没有自定义的 Cookie
登录请求的响应内容
响应返回 Cookie
添加课程请求的响应内容
调试取样器,查看是否有自动将 Cookie 保存为 Jmeter 变量
有循环次数的实际栗子
线程组结构树
登录请求只会发送一次
线程组属性
循环 2 次
HTTP Cookie 管理器
勾选了【每次反复清除 Cookies】
查看结果树
第一个增加课程请求能成功发送并响应
第二个增加课程请求的响应内容
第二个增加课程请求会返回未登录状态
重点
如果勾选了【每次反复清除 Cookies】,那么每次循环之后都会清除 Cookie 管理器自动存储的 Cookie
注意事项
- 如果一个采样器(Sampler)同级下有多个 Cookie 管理器,则无法指定当前要使用哪个 Cookie 管理器
- 另外,存储在一个 Cookie 管理器中的 Cookie 对其他任何管理器均不可用,因此请谨慎使用多个cookie管理器