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 个问题:

  1. FailureMessage 定义应该在一行或者你应该 concatenate 2 strings on 2 lines
  2. prev.setStopThread(true); 应该以 semicolon
  3. 结尾

另外:

  1. 确保您的 vars.getObject("dataFromDB") 表达式不会产生 null
  2. 将您的代码包围在 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 !!!!!!!!!!!");
}