groovy 错误o.a.j.u.BeanShellInterpreter:调用bsh方法时出错- Jmeter预处理器

syqv5f0l  于 6个月前  发布在  Shell
关注(0)|答案(1)|浏览(126)

需要帮助找出Jmeter BeanShell预处理器的问题,我正在使用下面的代码来获取变量数据并作为下一个POST请求传递,但它失败了,尽管我可以看到所有变量都被正确捕获。
请帮助确定导致问题的原因

int keys = Integer.parseInt(vars.get("getkeys_matchNr"));
StringBuilder requestBuilder = new StringBuilder();
requestBuilder.append("[");
for (int i = 1; i <= keys; i++) {
    requestBuilder.append(vars.get("getkeys_" + i));
    if (i != keys) {
        requestBuilder.append(",");
    }
}
requestBuilder.append("]");
sampler.getArguments().getArgument(0).setValue(requestBuilder.toString());

字符串
获取以下错误:
2023-11-01 12:51:12,275错误o.a.j.u.BeanShellInterpreter:Error invoking bsh method:eval Sourced file:inline evaluation of:``int keys = toString.parseInt(vars.get(“getkeys_ .":Attempt to resolve method:toString()on undefined variable or class name:out
尝试setValue到不同的字符串-“sampler.getArguments().getArgument(0).setValue(out.toString(0));”但也不起作用

oyjwcjzk

oyjwcjzk1#

我在你的代码中没有看到任何out对象的声明,很可能是复制粘贴问题,试着用requestBuilder替换out,这个问题就会消失。
使用Beanshell也是某种形式的性能反模式,从JMeter 3.1开始,您应该使用JSR223测试元素和Groovy语言进行脚本编写。
示例代码:

def requestBuilder = []
1.upto(vars.get('getkeys_matchNr') as int, { index ->
    requestBuilder.add(vars.get('getkeys_' + index))
})

def payload = new org.apache.jmeter.protocol.http.util.HTTPArgument('', new groovy.json.JsonBuilder(requestBuilder).toPrettyString(), '')
def arguments = sampler.getArguments()
arguments.addArgument(payload)
sampler.setArguments(arguments)

字符串
更多信息:

相关问题