Jmeter 而控制器似乎没有将变量评估为数字



我正在编写一个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");
}

确保满足以下条件:

  1. 您的While控制器有${continue}作为条件
  2. Beanshell采样器,前/后处理器或断言与上面的代码被添加为While控制器的子控制器

参见如何使用BeanShell指南了解更多细节和种类的BeanShell烹饪书。

一切都应该这样进行。

希望这对你有帮助。

最新更新