Jmeter 中的 Bean shell 实用程序

Bean shell utility in Jmeter

如何在 jmeter 中创建实用 bean shell 脚本。在 Jmeter 中,我有 5 个线程组,其中包含 bean shell samplers.i 想要在我的线程 group.The 中使用 beanshell class 下面给出的是示例 bean shell class 其中包含一个名为 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 采样器或 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);

启动文件:

您可以在启动文件中定义它。为此,有一个 属性 beanshell.init.file。请在 .bsh 文件中定义并在开始测试时使用此 属性 读取文件。

Bsh 共享命名空间:

您还可以查看 bsh.shared 命名空间以跨线程组共享对象。

我正在添加一个设置线程组来首先定义 SampleBeanShell。后来,在所有其他线程组中,我只是使用 bsh.shared.myUtil 来访问 SampleBeanShell 对象。

用法:bsh.shared.myUtil.add(10,20)

查看 here 了解更多信息 - #Sharing Variables。

根据JMeter Best Practices,最好避免编写脚本并尽可能使用 JMeter 内置测试元素和函数。

您可以使用 __intSum() or __longSum() 函数添加 2 个(或更多)值并将结果存储到 JMeter 变量中。

有关上述和其他 JMeter 函数的更多信息,请参阅 How to Use JMeter Functions post 系列。

为了在 Beanshell 中实现您的场景,您需要使该方法在其他线程组中可用,例如:

  • 在第一个线程组中:

    bsh.shared.myObj=SampleBeanshell();
    
  • 在第二个线程组中:

    bsh.shared.myObj.add(50,60);
    

您的代码不起作用,因为您没有将任何内容存储到第一个线程组myObj