我无法让while控制器在jmeter中工作。
我觉得我读到它没有重新评估用户定义的变量,所以我试图改用属性。
我首先使用BSF断言设置一个名为keepLooping的属性
${__setProperty(keepLooping, true)};
这似乎有效,因为它以
的条件进入While控制器${__property(keepLooping)}
但我不能因为我的生活而把它变成别的东西。我希望它根据http请求的结果文本更改属性。
所以我使用正则表达式提取器来设置变量,我可以看到它已经设置好了。然后我试图使用BSF断言根据我设置的变量设置keepLooping属性。我使用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的许多'怪癖'吗?非常感谢!
答案 0 :(得分:2)
"我觉得我觉得它没有重新评估用户定义的变量" - 我使用JMeter 2.9,确实如此。我使用用户定义的变量来计算循环次数。看起来像是:${__javaScript(${MY_USER_DEFINED_VARIABLE}>0)}
。唯一令人讨厌的事情是我必须得到变量的值,递增它,转换为字符串(Groovy中的toString()
),然后将新值放入MY_USER_DEFINED_VARIABLE
(使用vars.putObject("MY_USER_DEFINED_VARIABLE",localBSFVariable)
)
答案 1 :(得分:0)
使用vars.put或props.put将有所帮助,详细解释详见in this jmeter thread.