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控制器一般喝用户定义的变量
一起使用
结构类似这样:
在用户定义的变量
插件中定义了四个name,在后续http请求,需要每个都传进去执行一次,也就是整个线程组执行是一次,其中http请求会执行四次,并且每次使用不通的name
ForEach控制器配置:
传入name,输出testname,在后续http请求中,name替换成${testname}
即可
看看效果:
改进
回到之前那个删除taskid的问题,可以采用同样的方式,只要保证,传给ForEach控制器的是key:value形式,并且是同一个key,不同的value
其中search接口返回数据大概是这样:
1 | [ |
可以看到返回值中有多个taskId,这些taskId是需要全部传给后续delete接口删除的
可以用JSON提取出所有的taskID,再传给ForEach控制器,输出一个新的变量taskidItem,将该taskidItem传给delete接口,达到有多少taskId,delete接口就取不同的taskId循环多少次,最终全部删除的效果
JSON Extractor
配置:
以上就是本次实现,ForEach控制器,总的来说,适用于有多个value值返回,并且这些value值都需要进行后续操作的场景