我正在编写一个jmeter脚本,它一直加载数据,直到表达到指定的大小。我有一个while循环,其中我有一个HTTP Sampler来加载数据,然后另一个HTTP Sampler带有XPath后处理器来检查表大小(它们调用两个不同的api)。XPath Post Processor的引用变量是currentSize,我有一个用户定义的变量maxSize,但是使用${currentSize} <${maxSize}作为while循环的条件将创建一个无限循环。
认为问题可能是XPath的输出是一个字符串,我尝试在beanshell中做各种事情来将它强制转换为一个数字,但我是一个beanshell新手,所以我也没有成功。谁能指导我关于如何让jmeter识别一个变量作为一个数字?(最好是小数,但如果我必须四舍五入到整型,我可以接受。)
谢谢!
我认为使用__javascript(parseInt())应该足以让您检查条件。
。
$ {__javaScript(方法& lt ($ {time_elapsed_string});方法(${时间}))}
假设您有以下变量:
- currentSize
- 最大容量
其中continue
是通过用户自定义变量设置的,其值为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");
}
确保满足以下条件:
- 您的While控制器有
${continue}
作为条件 - Beanshell采样器,前/后处理器或断言与上面的代码被添加为While控制器的子控制器
参见如何使用BeanShell指南了解更多细节和种类的BeanShell烹饪书。
一切都应该这样进行。
希望这对你有帮助。