2017-03-07 238 views
2

我已經在jmeter的beanshell斷言中寫了一個數組,如下所示。在jmeter中從一個控制器訪問陣列到另一個控制器

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斷言上面的字符串數組?

回答

1

vars.put()方法期望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 
    

    這樣,你甚至能夠分享不同的線程組之間的對象。

How to Use BeanShell: JMeter's Favorite Built-in Component文章更多BeanShell的相關提示和技巧

+0

謝謝你的幫助。 – LPatil

0

您可以使用putObject()讓一個關鍵點,以任何類型的對象。

請注意,您將在使用getObject()在稍後的聲明中檢索它。如果你不這樣做,你會得到某種ClassCastException

這是你的工作,保持StringsObjects被搞砸了。

Protip:從不以相同的變量名存儲字符串和對象。這實際上打開了一個小地獄地獄漏洞,在那裏你的腳本將萌芽惡魔來自某些地方的例外,但罪魁禍首將在一個完全不同的腳本。來源:我從一個無處不在的腳本繼承而來。

+0

感謝您的幫助。 – LPatil

相關問題