我的Beanshell后处理程序中有这段代码
String line;
String[] words;
line = SampleResult.getResponseMessage(); log.info(msg);
words = line.split("*");
log.info("Here We are");
for (int i = 0; i < words.length; i++) {
log.info(words[i]);
}
这就是我要犯的错误
2017/02/21 14:23:31 jmeter.util.BeanShellInterpreter:错误调用bsh方法: eval源文件:内联计算:
String line; String[] words; line = SampleResult.getResponseMessage(); log.inf . . . '' : Attempt to resolve method: getResponseMessage() on undefined variable or class name: SampleResult 2017/02/21 14:23:31 WARN - jmeter.extractor.BeanShellPostProcessor: Problem in BeanShell script org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval Sourced file: inline evaluation of:
字符串行;String[]单词;line = SampleResult.getResponseMessage();log.inf。。。'‘:尝试在未定义变量或类名上解析方法: getResponseMessage():SampleResult
发布于 2017-02-21 23:38:15
严格地说,要消除错误,需要用SampleResult
替换prev
。
prev - ( SampleResult ) -允许访问以前的SampleResult
(来源)
因此,要解决异常:
line = prev.getResponseMessage();
log.info(line);
您总是可以在对象本身中看到对象提供的变量列表:
但是,如果我正确理解,您希望从采样器获取数据而不是响应消息。因此,您可能希望使用getResponseDataAsString()
而不是getResponseMessage()
所以,所有这些都是:
line = prev.getResponseDataAsString();
log.info(line);
发布于 2017-02-22 03:54:46
因此,请使用下列方法之一
line = new String(data);
line = prev.getResponseDataAsString();
line = ctx.getPreviousResult().getResponseDataAsString());
其中:
data
是包含父采样器响应数据二进制表示的字节数组。prev
是当前SampleResult类实例的速记ctx
- JMeterContext的缩写另外,考虑使用JSR223 PostProcessor和Groovy语言而不是Beanshell,因为Groovy更兼容Java,性能更好,并且具有良好的语言特性,这将使您的代码看起来和工作得更好。有关详细信息,请参阅Groovy是新黑文章。
https://stackoverflow.com/questions/42378336
复制相似问题