While Controller
While Controller指直到条件为False时才停止运行其下元件运行。
JMeter可将循环用一个名为${__jm__<控制器名称>__idx}的变量用索引的方式显示出来。
例如,如果你的While控制器名为WC,那么你可以通过${__jm__WC__idx}访问循环索引。索引从0开始。
参数介绍
属性 | 描述 | 必填 |
---|---|---|
Name | 控制器名称,可以根据实际情况进行设置 | 否 |
Comments | 注释,描述在业务中的作用 | 否 |
Condition(Function or variable) | 条件判断,可以为空,可以为函数或者变量 | 否 |
可能的条件值:
- 为空–当循环中的最后一个Sample失败时退出循环;
- LAST–当循环中的最后一个Sample失败时退出循环。如果进入循环之前的最后一个Sample失败,则不会进入循环;
- 其它–条件值等同于字符串"false"时退出(或不进入)循环;
Condition输入框可以输入最终计算结果等同于“false”的变量、函数,这允许根据需要使用__jexl3,__groovy函数,属性或变量。
Condition为空
当Condition为空时,直到循环中的最后一个Sample失败才会退出循环,如下面的例子,在While Controller下添加三个请求,如果只有请求2失败,那么此时会一直循环下去;如果请求3失败,那么此时会退出循环。
请求2失败,请求结果如下所示:
请求3失败,运行结果如下所示:
Condition为LAST
与上面不填一样,唯一的区别是,当进入循环之前最后一个请求失败了,那么不会进入循环。
执行结果如下所示:
表达式
判断条件可以用函数或者变量,当判断条件为False时跳出循环。
还是继续使用上面的实例,并且在While控制器下添加一个BeanShell Sampler,并写入如下函数:
print(${__jm__While Controller__idx});
if (${__jm__While Controller__idx}==2){ //判断循环次数为为3时退出循环
int a=Integer.parseInt("1");
int b=Integer.parseInt("8");
a++;
print(a);
vars.put("a",(a).toString());
vars.put("b",(b).toString());
};
而在While控制器条件下输入${__groovy(${a}+${b}!=10,)};
,此时当循环到3此后,该条件为False,那么就会退出循环,运行结果如下所示: