Jmeter ForEach控制器使用

Jmeter ForEach控制器使用

昨天遇到的问题,有个接口需要循环删除多个taskid(前一个接口获得),找了网上资料,最后成功实现

ForEach控制器

ForEach控制器一般和用户自定义变量一起使用,其在用户自定义变量中读取一系列相关的变量。该控制器下的采样器或控制器都会被执行一次或多次,每次读取不同的变量值

字段解释:

字段 含义
Input Variable Prefix 输入变量前缀
Output variable name 输出变量名称
Start index for loop(exclusive) 循环开始的索引(这里如果不填写,默认从1开始,如果没有1开始的变量,执行时会报错)
End index for loop(inclusive) 循环结束的索引
Add”_”before number 输入变量名称中是否使用“_”进行间隔

一般用法

ForEach控制器一般喝用户定义的变量一起使用
结构类似这样:
ForEach示例

用户定义的变量插件中定义了四个name,在后续http请求,需要每个都传进去执行一次,也就是整个线程组执行是一次,其中http请求会执行四次,并且每次使用不通的name

ForEach控制器配置:
ForEach控制器配置

传入name,输出testname,在后续http请求中,name替换成${testname}即可
看看效果:
执行效果

改进

回到之前那个删除taskid的问题,可以采用同样的方式,只要保证,传给ForEach控制器的是key:value形式,并且是同一个key,不同的value

11

其中search接口返回数据大概是这样:

1
2
3
4
5
6
7
8
9
10
[
{
"taskId":"5d12ddc64d44wserwreeaa4cb56",
"input":Object{...}
},
{
"taskId":"5d12ddc64ereea017eaa4cb56",
"input":Object{...}
}
]

可以看到返回值中有多个taskId,这些taskId是需要全部传给后续delete接口删除的
可以用JSON提取出所有的taskID,再传给ForEach控制器,输出一个新的变量taskidItem,将该taskidItem传给delete接口,达到有多少taskId,delete接口就取不同的taskId循环多少次,最终全部删除的效果

JSON Extractor配置:
JSON Extractor

以上就是本次实现,ForEach控制器,总的来说,适用于有多个value值返回,并且这些value值都需要进行后续操作的场景

文章目录
  1. ForEach控制器
  2. 一般用法
  3. 改进
|