While loop Jmeter-当控制器执行时;如果ctx.getPreviousResult().getResponseCode()=";200“&&;计数器<&引用;5“;不起作用

While loop Jmeter-当控制器执行时;如果ctx.getPreviousResult().getResponseCode()=";200“&&;计数器<&引用;5“;不起作用,while-loop,jmeter,While Loop,Jmeter,我想根据响应代码控制采样器,需要运行计数器中定义的n次时间。 我使用了while控制器,使用了如下所述的条件,但它没有按预期工作。 我在jmeter中的状态,而控制器: ${((${ctx.getPreviousResult().getResponseCode()} == "200" && ${counter} < 5),)} ${(${ctx.getPreviousResult().getResponseCode()}==“200”&&${counter}

我想根据响应代码控制采样器,需要运行计数器中定义的n次时间。
我使用了while控制器,使用了如下所述的条件,但它没有按预期工作。
我在jmeter中的状态,而控制器:

${((${ctx.getPreviousResult().getResponseCode()} == "200" && ${counter} < 5),)}
${(${ctx.getPreviousResult().getResponseCode()}==“200”&&${counter}<5),)

但它没有按预期工作,请有人帮我一下好吗。

响应代码是一个int代码,请尝试使用

(${ctx.getPreviousResult().getResponseCode()==200}&${counter}<5)


也就是说,如果没有双引号

您的条件格式不正确,您需要使用计算结果返回
true
的即或函数。它也可以是一个值为
true
,可以在其他地方设置为
false
。但是您的表达式被解释为“原样”,而没有被计算

建议修正案:

${__groovy(!ctx.getPreviousResult().getResponseCode().equals('200') && (vars.get('counter') as int) < 5,)}
${groovy(!ctx.getPreviousResult().getResponseCode().equals('200')&(vars.get('counter')as int)<5,}

更多信息:

响应代码是一个int,try==200(不带双引号)感谢您回答@gtoso,我更改了它并尝试执行它,我得到的响应是400,但仍然在执行while循环时没有任何停止,它应该停止,因为它应该只在响应代码为200时执行。