ForEach 控制器
# ForEach 控制器
位置:逻辑控制器中
# 什么是 ForEach 控制器
用来遍历取出变量的一种控制器
- ForEach 控制器一般和用户自定义变量或 JDBC 结果变量一起使用,用于可以遍历读取相关的返回值
- 该控制器下的 Samplers 和控制器都会被执行一次或多次,每次读取不同的变量值
- ForEach 控制器可以省略正则提取器提取出来的变量值用
_分隔的_
# 界面介绍

字段介绍:
| 字段 | 说明 |
|---|---|
| Input Variable Prefix | 输入变量名的前缀,默认为一个空字符串作为前缀 |
| Start index for loop(exclusive) | 循环开始的索引 不包括此值 默认从 1 开始 |
| End index for loop(inclusive) | 循环结束的索引 包括此值 |
| Output variable | 输出的变量名 后面的 sampler 可使用该变量名 |
| Add”_”before number | 输入的变量名和索引之间是否有 _ 间隔不勾选的话,则变量名和索引直接相连 默认勾选 |
# ForEach 控制器实例
# ForEach + 用户自定义变量
测试计划结构树:
用户自定义变量:
ForEach 勾选 Add”_”before number :

测试结果:

上面结果可以看出:
- Start index for loop(exclusive) 填 1 ,则从第二个变量开始取值
- 勾选 Add”_”before number 后没有取 第 4 个值
# 无输出变量名

测试结果:

重点:无输出变量名时,可使用 ${} 获取变量
# ForEach + JDBC Request
# 使用 Variable Names 接收 JDBC 返回的数据
测试计划结构树 + JDBC Request:

JDBC 返回的结果:

ForEach:

测试结果:

# 使用 Result variable name 接收 JDBC 返回的数据
测试计划结构树 + JDBC Request:

JDBC 返回的结果:

- 这里通过 Result Variable name 去接收所有数据,只有一个变量,是无法循环的
- 所以我们需要通过正则提取器将需要的 phone 字段的值提取出来
正则提取器:

正则表达式提取的结果:

ForEach:
但是正则会提取不必要的字段值(如:mobile_phone_1_g0),所以注意 ForEach 的输入变量前缀要写正确

测试结果:
(完)