如何在jmeter中创建实用程序bean shell脚本。在Jmeter中我有5个线程组,它包含bean shell samplers.i想在我的线程组中使用beanshell类。下面给出的是样本beanshell类,它包含一个名为add()的方法。
SampleBeanShell(){
int add(int a,int b){
return a+b;
}
return this;
}
obj=SampleBeanShell();
int result=obj.add(10,20);
log.info("REsult is"+result);
我想在线程组bean sampler或bean shell断言中的另一个中使用add()方法。
if (bsh.shared.myObj == void){
myObj=SampleBeanShell();
}
int result1=myObj.add(12,20);
log.info("REsult is"+result1);
我添加了上面的代码片段,我无法在另一个bean采样器和另一个线程组中调用此方法。
int result=bsh.shared.myObj.add(20,21);
log.info("2.Bean sampler result"+result);
答案 0 :(得分:1)
启动文件:
您可以在启动文件中定义它。为此目的,有一个属性beanshell.init.file
。请在.bsh
文件中定义并使用此属性在开始测试时读取文件。
Bsh共享命名空间:
您还可以查看bsh.shared
命名空间以跨线程组共享对象。
我首先添加了一个设置线程组来定义SampleBeanShell
。稍后,在所有其他线程组中,我只使用bsh.shared.myUtil
来访问SampleBeanShell对象。
用法:bsh.shared.myUtil.add(10,20)
检查here以获取更多信息 - #Sharing Variables。
答案 1 :(得分:0)
根据JMeter Best Practices,最好避免编写脚本并尽可能使用JMeter内置测试元素和函数。
您可以使用__intSum()或__longSum()函数添加2个(或更多)值并将结果存储到JMeter变量中。
有关上述和其他JMeter功能的更多信息,请参阅How to Use JMeter Functions帖子系列。
要在Beanshell中实现场景,您需要在其他线程组中使用该方法,如:
在第一个线程组中:
bsh.shared.myObj=SampleBeanshell();
在第二个线程组中:
bsh.shared.myObj.add(50,60);
您的代码不起作用,因为您没有将任何内容存储到第一个线程组中的myObj