Jmeter将两个参数传递给自定义函数

Jmeter将两个参数传递给自定义函数,jmeter,Jmeter,在Jmeter中,我能够获得一个通过一个参数工作的自定义函数,但是我不能获得一个通过两个参数工作的自定义函数 在BeanShellFunction.bshrc中,我定义了 printStr1(String str1) { System.out.println(str1); } printStr2(String str1, String str2) { System.out.println(str1, str2); } 在我的Jmeter BeanShell断言中 ${__Bea

在Jmeter中,我能够获得一个通过一个参数工作的自定义函数,但是我不能获得一个通过两个参数工作的自定义函数

在BeanShellFunction.bshrc中,我定义了

printStr1(String str1)
{
    System.out.println(str1);
}
printStr2(String str1, String str2)
{
    System.out.println(str1, str2);
}
在我的Jmeter BeanShell断言中

${__BeanShell(printStr1("hello"))}
${__BeanShell(printStr2("hello", "howAreYou"))}

我明白了,你好 我没有看到第二个函数的结果 不知何故,传递的第二个参数不起作用

从jmeter日志中,我看到: 2018-04-11 18:17:56348错误o.a.j.u.BeanShellInterpreter:调用bsh方法时出错:文件中的eval:内联计算:`printStr2(“hello”;''在第1行第10列遇到了“(\'hello\”;”。

您没有超过1个参数,因此
System.out.println(str1,str2)
将不会编译

如果要连接字符串,只需在
printStr2
方法中连接字符串:

System.out.println(str1 + str2);
考虑迁移到,因为在JMeter中可能不推荐使用Beanshell

还要注意的是,有一个特殊的
OUT
可用:

OUT-System.OUT-例如OUT.println(“消息”)

  • 您需要将
    printStr2
    函数修改为 方法只能接受一个单个字符串。将其更改为类似以下内容:

    printStr2(String str1, String str2)
    {
        System.out.println(str1 + str2);
    }
    
  • 根据JMeter:

    如果函数参数包含逗号,请确保用“\”转义,否则JMeter会将其视为参数分隔符

    您需要修改uu Beanshell函数调用以转义逗号,如下所示:

    ${__BeanShell(printStr2("hello "\, "howAreYou"),)}
    
  • 有关使用JMeter函数的更多信息,请参阅本文