JMeter的错误,当我尝试使用的BeanShell断言从数据库中获取数据

问题描述 投票:1回答:1

我试图提取使用豆壳断言从我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请求采样的结果变量名

该错误是:断言失败消息:org.apache.jorphan.util.JMeterException:错误调用BSH方法:EVAL

jmeter beanshell
1个回答
0
投票

至少有2个问题与您的代码:

  1. FailureMessage定义应该是在一个线上,否则您应该concatenate 2 strings on 2 lines
  2. prev.setStopThread(true);应与semicolon结束

另外:

  1. 确保您的vars.getObject("dataFromDB")表达不产生null
  2. 包围try block你的代码,所以如果有什么差错 - 你会看到在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所以考虑迁移到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 !!!!!!!!!!!");
} 
© www.soinside.com 2019 - 2024. All rights reserved.