ForEach Controller
ForEach控制器循环遍历一组相关变量的值。当您向ForEach控制器添加采样器(或控制器)时,每一个线程下执行时该控制器下的采样器(或控制器)都会执行一次或多次,在每次循环中变量都有一个新值。输入应该由几个变量组成,每个变量都有下划线和数字。每个这样的变量都必须有一个值。一般和用户自定义变量(User Defined Variables)一起使用,其在用户自定义变量中读取一系列相关的变量。例如,当输入变量的名称为inputVar时,应该定义以下变量:
- inputVar_1 = wendy
- inputVar_2 = charles
- inputVar_3 = peter
- inputVar_4 = john
用户自定义变量如下图所示:
参数介绍
ForEach Controller界面如下图所示:
属性 | 描述 | 必填 |
---|---|---|
Name | 控制器名称,可以根据实际情况进行设置 | 否 |
Comments | 注释,描述在业务中的作用 | 否 |
Input variable prefix | 输入变量前缀 | 否 |
Start index for loop(exclusive) | 循环变量的起始索引,默认从0开始 | 否 |
End index for loop(inclusive) | 循环结束的索引,默认从0开始 | 否 |
Output variable name | 输出变量名称,提供给其它控件引用 | 否 |
Add“_”before number | 输入变量名称中是否使用“_”进行间隔。 | 是 |
与自定义变量一起使用
在这个示例中,我们创建了一个测试计划,我们将线程组配置为单个线程并且循环次数设置为1,然后添加配置原件为用户自定义变量(User Defined Variables),自定义如上图所示,然后再添加一个ForEach Controller,添加一个节点为JAVA请求。ForEach 控制器配置如下图所示:
而JAVA请求配置如下所示:
执行结果如下图所示:
循环变量下标起点
如果不写,默认从下标为0开始,即从Wendy开始执行。如果写1,即从“charles”开始,如果超过变量数量,则不会执行
循环变量下标终点
如果不写,默认最后一个终止,即“jona”终止;如果写1,则在“charles”终止。
在上面的示例中,下标起点为1,下标终点为3,则执行结果如下图所示:
正则表达式提取数组数据
假如有这样一个业务有多个订单,我们查询到每笔订单后根据订单号进行出库,所以我们就需要遍历每一笔订单。那么此种情况下我们真好可以用ForEach Controller。
在这个示例中,我们创建一个测试计划,我们将线程组配置为单个线程并且循环次数设置为1,我们需要登录用户后将查询订单,然后在订单请求下添加一个后置处理器(正则表达式提取器),如下图所示:
然后再添加一个ForEach控制器,并在该控制器下添加一个出库请求的取样器。如下图所示:
订单取样器需要获取订单号${returnval}(即控制器生成的变量名),设置如下所示:
执行结果如下图所示: