0

我无法让 while 控制器在 jmeter 中工作。

我有一种感觉,我读到它不会重新评估用户定义的变量,所以我试图改用属性。

我首先使用 BSF 断言来设置一个名为 keepLo​​oping 的属性

${__setProperty(keepLooping, true)};

这似乎可以工作,因为它进入 While 控制器的条件为

${__property(keepLooping)}

但我一辈子都不能把那个属性改成别的东西。我希望它根据 http 请求的结果文本更改属性。

所以我使用正则表达式提取器来设置一个变量,我可以看到它正在设置。然后我尝试使用 BSF 断言根据我设置的变量设置 keepLo​​oping 属性。我使用的javascript如下:

log.info("IM IN HERE");
log.info("props is "+props);
//log.info("props keep looping is  "+props["keepLooping"]);
if (${surveyRequired} == false){
    log.info("IM IN HERE 1A and props is "+props);
    ${__setProperty(keepLooping, true)};
    log.info("IM IN HERE 1B");
}
else {
    log.info("IM IN HERE 2A");  
    ${__setProperty(keepLooping, false)};
    log.info("IM IN HERE 2B");
}

我不知道如何使用 javascript 设置属性 - 我已经尝试了几件事。任何人都可以帮忙吗?非常感谢!

还有人可以推荐一个很好的资源来协商jmeter的许多“怪癖”吗?非常感谢!

4

2 回答 2

2

“我感觉我读到它不会重新评估用户定义的变量”——我使用 JMeter 2.9,它确实如此。我使用用户定义的变量来计算循环数。它看起来像:${__javaScript(${MY_USER_DEFINED_VARIABLE}>0)}。唯一令人讨厌的事情是我必须获取变量的值,递增它,转换为字符串(toString()在 Groovy 中),然后将新值放入MY_USER_DEFINED_VARIABLE(通过使用vars.putObject("MY_USER_DEFINED_VARIABLE",localBSFVariable)

于 2013-10-14T05:37:41.633 回答
0

使用 vars.put 或 props.put 会有所帮助,正如在这个 jmeter 线程中详细解释的那样。

于 2013-10-11T04:33:06.383 回答