Jmeter 在线程组之间共享 Cookie

发表时间 ·

本文使用的 Jmeter 是 4.0 版本

分析

测试用例的结构如下:

Test Plan
  ├─ Setup Thread Group
  │    ├─ HTTP Cookie Manager
  │    └─ Log on
  ├─ Thread Group
  │    └─ Request
  └─TearDown Thread Group
       └─Log out

其中 Setup Thread Group 中模拟登录步骤,并获得登录信息,得到 Cookie 的名字叫 site . 希望将 site 的 Cookie 值传递给后面两个 Thread Group。基本的步骤分解如下:

保存 Cookie -> 传递 Cookie -> 加载 Cookie

只要连接上述三步,就能实现在线程组之间共享 Cookie.

保存 Cookie

保存 Cookie 到变量的的方法,已经在 保存 Cookie 一文讨论过。下面需要将变量转移到属性中。为 Log on 一步添加 JSR223 PostProcessor COOKIE_ 开头的变量值到属性中:

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("prop-site-cookie", vars.get("COOKIE_site"))

这条语句的意思是,从当前线程组的变量中,提出 COOKIE_site 变量的值,存入名叫 prop-site-cookie 的属性中。 props.put 和 vars.get 方法,具体用法参考 《Jmeter 的 vars 和 props 用法》

传递 Cookie

接下来,则按照 Jmeter 的变量类型和作用域 一文的分析,在线程组之间传递变量,最佳的方法是利用 Jmeter Properties(属性)。在另外两个线程组的请求增添 JSR223 PreProcessor , 用于将 上一步 保存的属性重新读出来,赋给所在线程组的变量中。

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

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

vars.put("COOKIE_site", props.get("prop-site-cookie"))

这条语句的意思是:从 Jmeter 属性当中,提取名叫 prop-site-cookie 的属性值,保存在当前线程组的变量 COOKIE_site 。props.put 和 vars.get 方法,具体用法参考 《Jmeter 的 vars 和 props 用法》

加载 Cookie

手动加载 Cookie 的方法,已经在 手动添加 Cookie 一文讨论过。只要在需要加载 Cookie 的线程组内,添加 Cookie Manager,就可以将传递来的 Cookie 赋予当前线程组的每一个线程。最终的测试计划如下:

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

相关文章   欢迎到 留言板 写下你的看法。
  本页面内容采用 署名协议 CC-BY 授权。欢迎转载,请保留原文链接