JUnit 不会退出在 JMeter 中配置的循环
JUnit wont quit Loop configured in JMeter
我编写了一个包含 While-Controller 的 Jmeter 测试。测试看起来有点像这样:
> Testlan
>> VARS
>> Thread
>>> HTTP Request
>>> Transaction Controller
>>>> User Parameters
>>>> HTTP Request
>> Result Tree
>> Test Fragment
>>> Transaction Controller
>>>> Init Loop Beanshell
>>>> Loop with Condition
>>>>> BeanShell Assertion
在“Init Loop Beanshell”中,我这样做:vars.put("MyVar","okay");
所以我的 While-Condition 看起来有点像这样:${__javaScript("${MyVar}"!="stop")}
在我的断言中,有一点我这样做:vars.put("MyVar", "stop");
奇怪的是,在 JMeter 中它工作得很好,当条件为假时循环退出。在 JUnit 中,它只是一个无限循环。我已经检查了 JUnit 日志中的 vars 并且 MyVar 是“停止”但它只是没有退出循环。
日志说:Condition value: false
我已经浪费了很多时间来弄清楚为什么这行不通。我只是希望当我从 JUnit 调用它时测试退出循环,就像我从 JMeter 调用它时一样。
我认为你的语法不正确,你应该更改这一行:
${__javaScript(${"MyVar"}!="stop")}
给这个:
${__javaScript("${MyVar}"!="stop")}
另外从性能的角度来看,最好使用__jexl3() or __groovy()函数
关于 Beanshell - 使用它是某种形式的性能反模式,since JMeter 3.1 you should be using JSR223 Test Elements and Groovy language for scripting so it worth considering migrating to JSR223 Assertion
所以,如果有人关心,我用变通办法解决了它。
所有这些 ${__javaScript/groovy/...(CONDITION)} 都不起作用,我仍然不知道为什么。
但是在 jMeter 和 jUnit 中起作用的是在 ${MyVar}
上设置 While-Condition,用 vars.put("MyVar","true");
初始化它,并在 vars.put("MyVar", "false");
[的断言上“清理”它
我编写了一个包含 While-Controller 的 Jmeter 测试。测试看起来有点像这样:
> Testlan
>> VARS
>> Thread
>>> HTTP Request
>>> Transaction Controller
>>>> User Parameters
>>>> HTTP Request
>> Result Tree
>> Test Fragment
>>> Transaction Controller
>>>> Init Loop Beanshell
>>>> Loop with Condition
>>>>> BeanShell Assertion
在“Init Loop Beanshell”中,我这样做:vars.put("MyVar","okay");
所以我的 While-Condition 看起来有点像这样:${__javaScript("${MyVar}"!="stop")}
在我的断言中,有一点我这样做:vars.put("MyVar", "stop");
奇怪的是,在 JMeter 中它工作得很好,当条件为假时循环退出。在 JUnit 中,它只是一个无限循环。我已经检查了 JUnit 日志中的 vars 并且 MyVar 是“停止”但它只是没有退出循环。
日志说:Condition value: false
我已经浪费了很多时间来弄清楚为什么这行不通。我只是希望当我从 JUnit 调用它时测试退出循环,就像我从 JMeter 调用它时一样。
我认为你的语法不正确,你应该更改这一行:
${__javaScript(${"MyVar"}!="stop")}
给这个:
${__javaScript("${MyVar}"!="stop")}
另外从性能的角度来看,最好使用__jexl3() or __groovy()函数
关于 Beanshell - 使用它是某种形式的性能反模式,since JMeter 3.1 you should be using JSR223 Test Elements and Groovy language for scripting so it worth considering migrating to JSR223 Assertion
所以,如果有人关心,我用变通办法解决了它。 所有这些 ${__javaScript/groovy/...(CONDITION)} 都不起作用,我仍然不知道为什么。
但是在 jMeter 和 jUnit 中起作用的是在 ${MyVar}
上设置 While-Condition,用 vars.put("MyVar","true");
初始化它,并在 vars.put("MyVar", "false");
[的断言上“清理”它