我在Jmeter 4.0的BeanShellSampler.bshrc中有一个基本功能
String getMyString(String strParam) {
return "MyString: "+strParam;
}
我在BeanShell Sampler中调用了如下
String N = "123123";
log.info("${__BeanShell(getMyString("${__V(Var${N})}"),)}");
当我运行Sampler时,输出就像那样。
2018-06-18 15:25:40,080 INFO o.a.j.u.BeanShellTestElement: MyString: Var${N}
如何将字符串变量设置为我的函数?
中阅读了函数文章谢谢。
答案 0 :(得分:1)
将下一行添加到 user.properties 文件中:
beanshell.sampler.init=BeanShellSampler.bshrc
将您的代码修改为:
String N = "123123";
log.info(getMyString(N));
就是这样,你应该在 jmeter.log 文件中获得MyString: 123123
请注意所有形式的脚本starting from Jmeter 3.1 it is recommended to use Groovy为Groovy performance is much better comparing to Beanshell,因此请考虑采取以下步骤:
在JMeter安装的“bin”文件夹中创建一个文件,即foo.groovy
,并将您的功能放在那里:
String getMyString(String strParam) {
return "MyString: " + strParam;
}
将下一行添加到 user.properties 文件中:
您应该可以从__groovy() function引用自定义代码,例如:
${__groovy(log.info(getMyString("123123")),)}
功能可以在测试计划的任何地方使用
答案 1 :(得分:0)
对于每个BeanShell程序类型,beanshell.*.init
bin/user.properties
属性
beanshell.function.init=BeanShellFunction.bshrc
beanshell.preprocessor.init=BeanShellSampler.bshrc
beanshell.postprocessor.init=BeanShellSampler.bshrc
beanshell.assertion.init=BeanShellFunction.bshrc
因此需要从任何程序(预处理程序,后处理程序等)调用相同的函数,我们需要将函数复制到每个.bshrc文件或对每个程序初始化属性使用相同的.bshrc文件。
在您的情况下,如果您使用本地字符串变量N
并将其与脚本一起传递。如果使用$ {Variable},则必须定义一个JMeter变量,以便JMeter可以选择其值。为此,您可以使用vars.put,将N值写入JMeter变量并使用$ {N}。
我已将Var123123
值定义为FinalValue
,如下所示
2个beanshell采样器,一个是将String变量N放到Jmeter变量中,另一个是beanshell脚本,如下所示
您可以在日志中看到其打印的VAR123123
值FinalValue
我选择2个beashell采样器的原因是,如果我将N
写入JMeter变量并在同一个脚本中使用它,那么在采样器执行之前它不会更新N值。
参考文献:
如果有帮助请告诉我