Jmeter:当我尝试使用 beanshell 断言从数据库获取数据时出错
Jmeter : Error when I try to get data from Database using beanshell assertion
我正在尝试使用 Bean shell 断言
从我的 JBDC 请求采样器中提取结果
我向我的采样器添加了一个 beanshell 断言以提取结果,但在 运行 它时出现错误。
有问题的代码是:
if (!ResponseCode.equals("200") || vars.getObject("dataFromDB").size() == 0) {
FailureMessage = "!!!!!!!!!!! No connection to the database or data not
received !!!!!!!!!!!";
Failure = true;
prev.setStopThread(true):
}
其中dataFromDB是我的JBDC Request Sampler的结果变量名
错误是:
断言失败消息:org.apache.jorphan.util.JMeterException: 错误
调用 bsh 方法:eval
您的代码至少有 2 个问题:
FailureMessage
定义应该在一行或者你应该 concatenate 2 strings on 2 lines
prev.setStopThread(true);
应该以 semicolon 结尾
另外:
- 确保您的
vars.getObject("dataFromDB")
表达式不会产生 null
- 将您的代码包围在 try block so if anything goes wrong - you will see the relevant message in jmeter.log file
中
假设以上所有建议的修复如下:
try {
if (!ResponseCode.equals("200") || vars.getObject("dataFromDB").size() == 0) {
FailureMessage = "!!!!!!!!!!! No connection to the database or data notreceived !!!!!!!!!!!";
Failure = true;
prev.setStopThread(true);
}
} catch (Exception ex) {
log.error("Script failure", ex);
}
请注意 since JMeter 3.1 it's recommended to use JSR223 Test Elements and Groovy language for any form of scripting so consider migrating to JSR223 Assertion,所需的代码修改如下所示:
if (!prev.getResponseCode().equals("200") || vars.getObject("dataFromDB").size() == 0) {
AssertionResult.setFailure(true);
AssertionResult.setFailureMessage("!!!!!!!!!!! No connection to the database or data notreceived !!!!!!!!!!!");
}
我正在尝试使用 Bean shell 断言
从我的 JBDC 请求采样器中提取结果我向我的采样器添加了一个 beanshell 断言以提取结果,但在 运行 它时出现错误。 有问题的代码是:
if (!ResponseCode.equals("200") || vars.getObject("dataFromDB").size() == 0) {
FailureMessage = "!!!!!!!!!!! No connection to the database or data not
received !!!!!!!!!!!";
Failure = true;
prev.setStopThread(true):
}
其中dataFromDB是我的JBDC Request Sampler的结果变量名
错误是: 断言失败消息:org.apache.jorphan.util.JMeterException: 错误 调用 bsh 方法:eval
您的代码至少有 2 个问题:
FailureMessage
定义应该在一行或者你应该 concatenate 2 strings on 2 linesprev.setStopThread(true);
应该以 semicolon 结尾
另外:
- 确保您的
vars.getObject("dataFromDB")
表达式不会产生null
- 将您的代码包围在 try block so if anything goes wrong - you will see the relevant message in jmeter.log file 中
假设以上所有建议的修复如下:
try {
if (!ResponseCode.equals("200") || vars.getObject("dataFromDB").size() == 0) {
FailureMessage = "!!!!!!!!!!! No connection to the database or data notreceived !!!!!!!!!!!";
Failure = true;
prev.setStopThread(true);
}
} catch (Exception ex) {
log.error("Script failure", ex);
}
请注意 since JMeter 3.1 it's recommended to use JSR223 Test Elements and Groovy language for any form of scripting so consider migrating to JSR223 Assertion,所需的代码修改如下所示:
if (!prev.getResponseCode().equals("200") || vars.getObject("dataFromDB").size() == 0) {
AssertionResult.setFailure(true);
AssertionResult.setFailureMessage("!!!!!!!!!!! No connection to the database or data notreceived !!!!!!!!!!!");
}