Jmeter系列(31)- 详解 ForEach控制器

转自:https://www.cnblogs.com/poloyy/

一、前言

  • ForEach 控制器一般和用户自定义变量/JDBC结果变量一起使用,用于可以遍历读取相关的返回值
  • 该控制器下的 Samplers 和控制器都会被执行一次或多次,每次读取不同的变量值
  • ForEach 控制器和正则提取器是个好搭档,因为正则提取出来的变量值会用 _ 分隔,而 ForEach 可以省略 _

二、ForEach

img

三、ForEach 界面介绍

img

3.1 字段含义

字段 含义
Input Variable Prefix 输入变量名的前缀,默认为一个空字符串作为前缀。
Start index for loop(exclusive) 循环开始的索引
不包括此值
默认从 1
开始填 0
则起始索引是 1,填 1 则是 2
End index for loop(inclusive) 循环结束的索引
包括此值
填 100 则结束索引是 100
Output variable 输出的变量名
在后续循环中,samplers 可使用的变量名
Add”_”before number 输入变量名和索引之间是否有 _ 间隔
不勾选的话,则输入变量名和索引直接相连

四、ForEach 结合用户自定义变量的例子

4.1 线程组树结构

img

​ 线程组,只有一个线程

4.2 用户自定义变量

img

​ 一共有四个

4.3 ForEach

img

​ 前缀为 name 的有四个变量,所以循环四次

4.4 运行结果

img

4.5 如果输出变量名称为空,需要怎么取循环的值?

img

直接取空即可 ${}

五、ForEach 不勾选 Add”_”before number 的栗子

5.1 线程组树结构

img

5.2 用户自定义变量

img

5.3 ForEach

img

5.4 运行结果

img

六、ForEach 结合 JDBC Request 的例子一

6.1 线程组树结构

img

6.2 JDBC 运行结果

img

​ JDBC 一共返回 100 条数据,这里我们是通过 Variable names 去接住所有数据,对应有 100 个变量(mobile_1 到 mobile_100)

6.3 ForEach

img

​ 循环 100 次,输入变量 mobile_1 - mobile_100 并输出为 new_mobile_1 - new_mobile_100

6.4 运行结果

img

七、ForEach 结合 JDBC Request 的例子二

7.1 线程组树结构

img

7.2 JDBC 运行结果

img

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

7.3 正则提取器

img

​ 关于正则提取器更多知识点可看:https://www.cnblogs.com/poloyy/p/13179150.html

7.4 正则提取结果

img

​ 我们要的其实是箭头的那些,但是正则会提取不必要的字段值(如:mobile_new_11_g0),所以注意 ForEach 的输入变量前缀要写正确

7.5 ForEach

img

​ 循环 100 次,输入变量 mobile_new_1 - mobile_new_100 并输出为 mobile_1 - mobile_100

7.6 运行结果

img

原文地址:https://www.cnblogs.com/dongye95/p/14187635.html