惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
博客园_首页
罗磊的独立博客
云风的 BLOG
云风的 BLOG
J
Java Code Geeks
Last Week in AI
Last Week in AI
D
DataBreaches.Net
Jina AI
Jina AI
博客园 - Franky
大猫的无限游戏
大猫的无限游戏
Apple Machine Learning Research
Apple Machine Learning Research
V
V2EX
D
Docker
MongoDB | Blog
MongoDB | Blog
B
Blog RSS Feed
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
宝玉的分享
宝玉的分享
Engineering at Meta
Engineering at Meta
The Cloudflare Blog
博客园 - 三生石上(FineUI控件)
有赞技术团队
有赞技术团队
人人都是产品经理
人人都是产品经理
H
Help Net Security
T
The Blog of Author Tim Ferriss

晚花行乐

马克卡尼在2026年达沃斯论坛上的讲话(阅读材料) | 晚花行乐 鸡娃如何用力才是恰到好处 | 晚花行乐 读万卷书,行万里路的辩证关系 | 晚花行乐 反对培训机构掐尖招生 | 晚花行乐 小泽和建国会谈最后10分钟全文(阅读材料) | 晚花行乐 来看看 DeepSeek 怎么鸡娃 | 晚花行乐 谈谈基本功 | 晚花行乐 惠普 ProDesk SFF PC 各系列参数对比 | 晚花行乐 解决瘦客户机上安装 Debian 12 启动失败问题 | 晚花行乐 意拾喻言:老外写的文言文 | 晚花行乐 笠翁对韵中的典故(十三元) | 晚花行乐 谈谈中考取消四小门 | 晚花行乐 亚马逊云科技产品免费试用攻略(3) - 对象存储服务 | 晚花行乐 在 Windows 10 LTSC 版本上安装 WSL2 | 晚花行乐 Debian 12 的常用配置项 | 晚花行乐 在 Debian 12 上安装 Nvidia 显卡驱动程序 | 晚花行乐 解决 Debian 12 关机失败问题 | 晚花行乐 解决 VS Code 自动更新版本后卡在连接界面 | 晚花行乐 观看巴黎奥运会有感 | 晚花行乐 在 Windows10 上安装惠普旧打印机驱动程序 | 晚花行乐 欢迎关注公众号:晚花行乐 | 晚花行乐 如何编写拼写检查器 | 晚花行乐 亚马逊云科技产品免费试用攻略(2) - 云服务器 | 晚花行乐 Pandas 中 axis 参数的理解(附实例) | 晚花行乐 我打算命个名,叫什么什么 Manager | 晚花行乐 上海武康路历史建筑一览 | 晚花行乐 Python 实现简单的数学表达式解析并处理 | 晚花行乐 观看马拉松的感悟 | 晚花行乐 Python 保存 Cookies 到文件并再次读取 | 晚花行乐 如何为 Hugo 静态网站添加评论功能 | 晚花行乐
Jmeter 在线程组之间共享 Cookie | 晚花行乐
2018-09-11 · via 晚花行乐

在 《Jmeter 如何管理 Cookie 》一文中提到,Cookie Manager 的作用范围是当前的线程组。如果有多个线程组,需要将 Cookie 在线程组之间传递,就需要使用全局属性传递。具体做法见本文内容。

本文使用的 Jmeter 是 4.0 版本

本文目的

假如我们使用结构如下的测试计划:

Test Plan
  ├─ Setup Thread Group
  │    ├─ HTTP Cookie Manager
  │    └─ Log on    # 拿到 Cookie
  │ 
  ├─ Thread Group
  │    └─ Request   # 使用 Cookie
  │ 
  └─ TearDown Thread Group
       └─Log out    # 使用 Cookie

从图中可以看出,包括三个独立的线程组。其中 Setup Thread Group 中包含登录步骤 Log on ,获得登录 Cookie Thread Group 是正式发请求的部分,希望在请求中带上前面获得的 Cookie TearDown Thread Group 负责善后事务,同样希望带上 Cookie

思路

为了达到上述目的,基本的步骤分解如下:

Setup Thread Group保存 Cookie 到属性变量(Properties) Thread Group 从属性变量(Properties)中读出 Cookie TearDown Thread Group 从属性变量(Properties)中读出 Cookie

保存 Cookie

Jmeter 如何管理 Cookie 一文讨论过保存 Cookie 到属性变量的的方法,这里再介绍一下,具体是:

允许保存 Cookie

首先编辑 Jmeter 的属性文件: bin/jmeter.properties , 修改其中的

# CookieManager behaviour - should Cookies be stored as variables?
# Default is false
#CookieManager.save.cookies=false

最后一行去掉#号,并改为

CookieManager.save.cookies=true

Cookie 在属性中保存的形式

上面的步骤完成后,CookieManager 每次收到一个新的 Cookie ,会保存在属性值,比如名称为 site 的 Cookie 会保存到 COOKIE_site 变量里。可以用 Debug Sampler 查看保存的变量。我们在脚本里加上 Debug Sampler :

Test Plan
  ├─Setup Thread Group
  │ ├─ HTTP Cookie Manager
  │ ├─ Log on
  │ ├─ Debug Sampler # 用于记录属性值列表
  │ └─ View Results Tree # 用于查看属性值列表
  │
...

默认情况下, Debug Sampler 是不显示属性值的,需要将开关打开:

以百度为例

举个例子,我们请求百度的首页:会得到一些 Cookie:

获得的响应中有 set-Cookie 的内容:

到 Debug Sampler 中就可以看到 保存在变量列表中:

保存 Cookie

下面需要将 Cookie 变量转移到属性中。为 Log on 一步添加 JSR223 PostProcessor

Test Plan
  ├─Setup Thread Group
  │ ├─ HTTP Cookie Manager
  │ └─ Log on
  │     └─ JSR223 PostProcessor \# 新增
  │
  ├─ Thread Group
  │   └─ Request
  │
  └─TearDown Thread Group
      └─ Log out

在 JSR223 PostProcessor 的代码文本框中,填入如下 Groovy 代码:

props.put("cookie_site", vars.get("COOKIE_site"))

这条语句的意思是,从当前线程组的变量中,提出 COOKIE_site 变量的值,存入名叫 cookie_site 的属性中。 关于 props.putvars.get 方法,具体用法参考 Jmeter 的 vars 和 props 用法

加载 Cookie

全局属性

接下来,则按照 Jmeter 的变量类型和作用域 一文的分析,在线程组之间传递变量,最佳的方法是利用 Jmeter Properties(属性)。

从上图看出,属性的作用范围是全局的,从每个线程组内部可以读取或者写入属性值。既然上面的 保存一节 已经将Cookie写入属性,接下来可以在另一个线程组中读出Cookie

添加 Cookie Manager

加载 Cookie 的方法,只要在线程组内添加 Cookie Manager

Test Plan
  ├─Setup Thread Group
  │   ├─ HTTP Cookie Manager
  │   └─ Log on
  │      └─ JSR223 PostProcessor
  │
  ├─ Thread Group
  │   ├─ HTTP Cookie Manager # 新增
  │   └─ Request
  │
  └─TearDown Thread Group
      └─ Log out

插入 Cookie

每条 Cookie 包括三部分:

  • Cookie 名称
  • Cookie 值
  • 作用域 Domain

都体现在 Cookie Manager 的 User-Defined Cookies 一栏内:

在上图中,手动新增一条名为 site 的Cookie,然后使用 ${__property()} 函数 读取 cookie_site 属性值,同时指定了作用域 ${your_domain}

各位读后有什么想法,请在下方留言吧!如果对本文有疑问或者寻求合作,欢迎 联系邮箱邮箱已到剪贴板

精彩评论