从一个控制器访问jmeter中的数组到另一个控制器

Accessing array in jmeter from one controller to another controller

I have written an array in beanshell assertion in jmeter as shown below.

String[] myList = {"CM_Name","OwnerID"};
for (int i = 0; i < myList.length; i++)
{              
vars.put("create_"+myList[i],ctx.getCurrentSampler().getArguments().argumentsAsMap.get(myList[i]));
log.info("create_"+myList[i]);
}

我希望 myList[] 可以在位于另一个控制器中的另一个 beanshell 断言中访问。 我试过这个

vars.put("myArr",myList);

但是没有用。我该怎么做才能在另一个 beanshell 断言中检索上述字符串数组?

vars.put() method expects String 只能作为第二个参数,所以不能放数组,解决方法在:

  1. 使用vars.putObject()方法如:

    vars.putObject("myArr", myList);
    

    稍后您将能够像这样访问它:

    String [] myList = vars.getObject("myArr");
    
  2. 像这样使用bsh.shared namespace

    第一个断言:

     bsh.shared.myArr = myList
    

    在第二个断言中:

     String [] myList = bsh.shared.myArr
    

    这样您甚至可以在不同的线程组之间共享对象。

有关 Beanshell 的更多提示和技巧,请参阅 How to Use BeanShell: JMeter's Favorite Built-in Component 文章

您可以使用 putObject() 让键指向任何类型的对象。

请注意,您将使用getObject()在以后的断言中检索它。如果你不这样做,你会得到某种 ClassCastException

防止 StringsObjects 被搞砸是你的工作。

提示:从不 在相同的变量名下交替存储字符串和对象。这实际上打开了一个 通往地狱 漏洞的小门,您的脚本将在其中萌生 恶魔 来自某些地方的异常,但罪魁祸首将在一个完全不同的脚本中.资料来源:我继承自一个在任何地方都执行此操作的脚本。