我正在编写一个jmeter脚本,它一直在加载数据,直到表达到指定的大小。我有一个while循环,其中我有一个HTTP Sampler来加载数据,然后是另一个带有XPath后处理器的HTTP Sampler来检查表大小(它们调用两个不同的API)。 XPath后处理器的引用变量是currentSize,我有一个用户定义的变量maxSize,但使用$ {currentSize}< $ {maxSize}作为while循环的条件创建一个无限循环。
想想也许问题是XPath的输出是一个字符串,我已经尝试在beanshell中做各种事情来强制它到一个数字,但我是豆壳菜鸟,所以我没有'这也是成功的。任何人都可以指导我如何让jmeter将变量识别为数字? (最好是小数,但如果我必须舍入到int,我可以忍受。)
谢谢!
答案 0 :(得分:4)
我认为使用__javascript(parseInt())应该足以检查条件。
e.g。
$ {__ javaScript(parseInt($ {time_elapsed_string})< parseInt($ {duration}))}
答案 1 :(得分:2)
假设您有以下变量:
其中continue
通过User Defined Variables设置,其值为true
您可以使用以下Beanshell代码检查当前大小是否等于或大于最大大小:
import java.math.BigDecimal;
String currentSize = vars.get("currentSize");
String maxSize = vars.get("maxSize");
BigDecimal currentSizeNumber = new BigDecimal(currentSize);
BigDecimal maxSizeNumber = new BigDecimal(maxSize);
if (currentSizeNumber.compareTo(maxSizeNumber) > -1){
vars.put("continue", "false");
}
确保符合以下条件:
${continue}
作为条件有关Beanshell食谱的更多详细信息和种类,请参阅How to use BeanShell指南。
一切都应该以这种方式运作。
希望这会有所帮助。