Jmeter:类型变量声明:方法调用Double.parseDouble

时间:2016-08-17 12:07:46

标签: jmeter beanshell jsonpath

嘿,我正在为jmeter中的API测试做一些beanhell脚本。我用beanshell编写了很多jmeter脚本,并且在使用Integer.parseInt()方法调用时工作正常,但是我有一个带小数位的值,我的SQL返回值为20.00000,而我的Json路径提取器得到20.0所以我的测试在比较时失败了。由于这个问题,我决定将这些值作为双变量而不是字符串进行比较,但是当我在BeanShell上使用Double.parseDouble时,我得到了错误。

  

2016/08/17 12:48:45错误 - jmeter.util.BeanShellInterpreter:调用bsh方法时出错:eval源文件:内联评估:print("Width Assertion..."); int Total_Printers_SQL = Integer.parseInt(vars.get . . . '':类型变量声明:方法调用Double.parseDouble < / p>      

2016/08/17 12:48:45 WARN - jmeter.assertions.BeanShellAssertion:org.apache.jorphan.util.JMeterException:调用bsh方法时出错:eval源文件:内联评估:print("Width Assertion..."); int Total_Printers_SQL = Integer.parseInt(vars.get . . . '':类型变量声明:方法调用Double.parseDouble

即使显示错误,也会在Jmeter提示符上打印双变量的值,如下所示。

enter image description here

如果有人是豆壳专家并且可以帮我识别错误,那就太棒了。谢谢!

1 个答案:

答案 0 :(得分:2)

如果您获得的号码不是有效的Double(例如1.2s,或仅null),您将获得此类例外。解决方法是检查值is double by RegEx,或者只是trying to parse, and catching exception(请注意,Beanhell没有正确传递异常,因此您必须检查是否有异常,因此最好限制它到那一行):

double x = 0.0; // default value
String value = vars.get("myVar");
try
{
    x = Double.parseDouble(value);
}
catch(Exception e)
{
    log.info("Cannot parse " + value + " as double");
}