我正在使用JMeter 5.0,并且试图遍历数据库结果集。
为简单起见,我们只使用“ 3”代替vars.getObject(“ resultSet”)。size()(这是我的结果集的大小)
我正在尝试使用WHILE组件自己的索引来使其停止
(请不要告诉我如何使用计数器组件,因为鉴于我发现的有关JMeter WHILE的所有帮助,我都可以使它自己工作,但是它对我来说是违反直觉的(无双关语) ,就像以其他任何语言递增“ i”一样:
`
for(int i = 0;i < 10;)
{
// do stuff
i++;
}
`
我找到并尝试过的语法(当我的组件命名为LOOP时):
${__jm__LOOP__idx} < 3
:不返回错误但不会停止
${__javaScript("${__jm__LOOP__idx}" < 3 )}
:不返回错误,但也不会循环。
${__javaScript(${__jm__LOOP__idx} < 3)}
:
工作并在3点后停止循环,但返回此错误:
javax.script.ScriptException: <eval>:1:1 Expected ; but found {
${__jm__LOOP__idx} < 3
^ in <eval> at line number 1 at column number 1
at jdk.nashorn.api.scripting.NashornScriptEngine.throwAsScriptException(NashornScriptEngine.java:470) ~[nashorn.jar:?]
在此感谢您提供的任何帮助和宝贵的时间。
答案 0 :(得分:1)
假设您的While Controller名为 LOOP ,以此为条件,它使用__jexl3函数:
$ {__ jexl3(vars.get(“ __ jm__LOOP__idx”)== null || vars.get(“ __ jm__LOOP__idx”)<3,)}