在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:5548错误oajuBeanShellInterpreter:调用bsh方法时出错:eval文件:内联评估:``printStr2(" hello"''遇到& #34;(\" hello \&#34 ;;"第1行,第10栏。
答案 0 :(得分:1)
您需要将printStr2
功能修改为PrintStream.println()
方法只能接受单个字符串。将其更改为:
printStr2(String str1, String str2)
{
System.out.println(str1 + str2);
}
根据JMeter documentation:
如果函数参数包含逗号,请务必使用“\”进行转义,否则JMeter会将其视为参数分隔符
您需要修改__Beanshell函数调用以转义逗号,如:
${__BeanShell(printStr2("hello "\, "howAreYou"),)}
有关使用JMeter函数的更多信息,请参阅Apache JMeter Functions - An Introduction文章。
答案 1 :(得分:0)
您没有println超过1个参数,因此System.out.println(str1, str2)
无法编译。
如果要连接字符串,只需在printStr2
方法中连接字符串:
System.out.println(str1 + str2);
考虑转移到JSR223 Sampler,因为Beanshell可能在JMeter中已弃用。
另请注意,有一个特殊的OUT
可用:
OUT - System.out - 例如通过out.println( “消息”)