JMeter 核心解读之 setProperty 函数实现跨线程组传递参数实战
1)实战步骤
- JMX 脚本解析:
- 添加 三个 Thread Group (线程组)组件
- 添加 jp@gc - Dummy Sampler(虚拟模拟器)组件
- 添加 JSON Extractor (JSON 提取器)组件
- 添加 BeanShell PostProcessor (BeanShell 后置处理器)组件
- 添加三个 Debug Sampler (调试取样器)组件
- 添加 View Results Tree (察看结果树)组件
2)具体步骤
-
设置 Test Plan (测试计划)中的 Run Thread Groups consecutively(i.e. one at a time) 为勾选状态 (不勾选不能实现跨线程组传参),其他默认

-
添加第一个 Thread Group (线程组)组件,名称输入:Thread Group=1,其他默认填写

-
在第一个线程组 Thread Group=1 组件下,添加 jp@gc - Dummy Sampler (虚拟模拟器)组件,定义好返回信息

-
响应信息如下:
{ "data": { "created_at": 1631691974, "auth": [ { "id": 0, "access_token": "8ce0e54a9303aac814e9dbcc72a1" }, { "id": 1, "access_token": "8ce0e54a9303aac814e9dbcc72a2" }, { "id": 2, "access_token": "8ce0e54a9303aac814e9dbcc72a3" } ] } }
-
-
在 jp@gc - Dummy Sampler (虚拟模拟器)组件下,添加 JSON Extractor (JSON 提取器)组件

-
第一处 Names of created variables 表示需要输入变量名称,例如:access_token
-
第二处 JSON Path expressionns 表示需要输入 JSON 提取表达式,例如:
返回第一个 access_token,输入 $.data.auth[0].access_token 既可
-
第三处 Match No. (0 for Random) 表示需要输入匹配的编号,例如:
由于输出一个值,这里输入的编号:0 (随机输出一个值)
-
第四处 Default Values 表示需要输入提取不到值时候的输出值,例如:error
-
其他默认填写
-
-
在 jp@gc - Dummy Sampler (虚拟模拟器)组件下,添加 BeanShell PostProcessor (BeanShell 后置处理器)组件

-
第一处输入 JSON Extractor (JSON 提取器)组件提取出来的 access_token,输入参数为:
${access_token} -
第二处输入如下:
String access_token = bsh.args[0];
${__setProperty(new_access_token,${access_token},)};第一行代码表示 BeanShell PostProcessor (BeanShell 后置处理器)组件接受的参数赋值给access_token,索引 0 表示为接收第一个值
第二行代码表示 BeanShell PostProcessor (BeanShell 后置处理器)组件把 access_token 的值给new_access_token,并设置 new_access_token 为 JMeter 的属性变量(全局变量)
-
-
在 jp@gc - Dummy Sampler (虚拟模拟器)组件下,添加 Debug Sampler (调试取样器)组件,并把名称改为
Thread1=== $(access_token},易于查看调试结果

-
添加第二个 Thread Group (线程组)组件,名称输入:
Thread Group=2,其他默认填写,并且在该线程组下添加 Debug Sampler (调试取样器)组件,并把名称改为Thread2=== ${__P(access_token,)},易于查看调试结果

-
添加第三个 Thread Group (线程组)组件,名称输入:
Thread Group=3,其他默认填写,并且在该线程组下添加 Debug Sampler (调试取样器)组件,并把名称改为Thread3=== ${__P(access_token,)},易于查看调试结果

-
添加 View Results Tree (察看结果树)组件,查看执行结果

- 第一处为需要提取的响应信息
- 第二处为跨线程组传递的参数
本文来自博客园,作者:那个曼巴,转载请注明原文链接:https://www.cnblogs.com/aharderbro/articles/15224536.html

浙公网安备 33010602011771号