Jmeter系列(37)- 详解 ForEach控制器
如果你想从头学习Jmeter,可以看看这个系列的文章哦
https://www.cnblogs.com/poloyy/category/1746599.html
前言
- ForEach 控制器一般和用户自定义变量/JDBC结果变量一起使用,用于可以遍历读取相关的返回值
- 该控制器下的 Samplers 和控制器都会被执行一次或多次,每次读取不同的变量值
- ForEach 控制器和正则提取器是个好搭档,因为正则提取出来的变量值会用_分隔,而 ForEach 可以省略 _
ForEach
ForEach 界面介绍
字段含义
字段 | 含义 |
---|---|
Input Variable Prefix | 输入变量名的前缀,默认为一个空字符串作为前缀。 |
Start index for loop(exclusive) |
|
End index for loop(inclusive) |
|
Output variable |
|
Add”_”before number |
|
ForEach 结合用户自定义变量的栗子
线程组树结构
线程组,只有一个线程
用户自定义变量
一共有四个
ForEach
前缀为 name 的有四个变量,所以循环四次
运行结果
如果输出变量名称为空,需要怎么取循环的值?
直接取空即可 ${}
ForEach 不勾选 Add”_”before number 的栗子
线程组树结构
用户自定义变量
ForEach
运行结果
ForEach 结合 JDBC Request 的栗子一
线程组树结构
JDBC 运行结果
JDBC 一共返回 100 条数据,这里我们是通过 Variable names 去接住所有数据,对应有 100 个变量(mobile_1 到 mobile_100)
ForEach
循环 100 次,输入变量 mobile_1 - mobile_100 并输出为 new_mobile_1 - new_mobile_100
运行结果
ForEach 结合 JDBC Request 的栗子二
线程组树结构
JDBC 运行结果
- 这里通过 Result Variable name 去接住所有数据,只有一个变量,是无法循环的
- 所以我们需要通过正则提取器将需要的 mobile 字段的值提取出来
正则提取器
关于正则提取器更多知识点可看:https://www.cnblogs.com/poloyy/p/13179150.html
正则提取结果
我们要的其实是箭头的那些,但是正则会提取不必要的字段值(如:mobile_new_11_g0),所以注意 ForEach 的输入变量前缀要写正确
ForEach
循环 100 次,输入变量 mobile_new_1 - mobile_new_100 并输出为 mobile_1 - mobile_100
运行结果