嘿,我正在为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提示符上打印双变量的值,如下所示。
如果有人是豆壳专家并且可以帮我识别错误,那就太棒了。谢谢!
答案 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");
}