2013-05-29 32 views
0

我寫下面的腳本在豆殼樣,但它不能被正確執行不工作狀態,如果豆殼採樣

JMeter的從來沒有在「如果」條件進入,我在做錯了嗎?

* WRIDTEMP是一個變量,WRId是一個變量,它具有從csv文件中檢索的值。

if((vars.get("WRIDTEMP")==vars.get("WRId")) || vars.get("WRIDTEMP")==0) 
{ 
    String i = vars.get("C"); 
    int counter = Integer.parseInt(i); 
    counter++; 
    vars.put("C", "" + counter); 

    if(counter<10) 
    { 
     vars.put("Message",temp+authString); 
    } 
} 
+0

在「Bean Shell採樣器」前添加一個帶有「JMeter屬性」和「JMeter變量」的「調試採樣器」,並將輸出粘貼到此處。 –

+0

WRIDTEMP始終爲0,它是我設置的默認值,WRId因其值來自csv而發生更改。 –

回答

7

您正在比較字符串使用==,您必須使用.equals()方法來比較它們。 與0比較,你應該做.equals(「0」)

+1

Ohk ...所以我們可以在Jmeter中使用equals方法?我不知道,謝謝......這是否意味着所有基本的Java函數都可以在Jmeter中使用? –

0

這似乎是jmeter中的beanshell解釋器的一個錯誤。常規的beanshell外殼不支持使用==進行字符串比較。事實上,它是豆殼的特徵之一。

2

我想我可以證實這個問題。

我不知道這是否是一個錯誤或沒有,但我已經發現的是,運行此代碼時:

String jira_version = vars.get("jiraVersion"); 
if (jira_version =="7")) { 
    vars.put("closeIssueTitle_local","Done"); 
    vars.put("isJIRA6_local","false"); 
    vars.put("isJIRA7_local","true"); 

} else if (jira_version.equals("6")) { 
    vars.put("closeIssueTitle_local","Close Issue"); 
    vars.put("isJIRA6_local","true"); 
    vars.put("isJIRA7_local","false"); 
} else { 
    vars.put("closeIssueTitle_local","CLOSEISSUETITLE_BEANSHELL_FAILURE"); 
    vars.put("isJIRA6_local","ERROR"); 
    vars.put("isJIRA7_local","ERROR"); 
} 

凡jira_version的值是字面上的6或7,那麼如果條件始終評估爲最後一個不匹配的情況。

當我改變我的評價條件

if (jira_version.equals("6")) { 

那麼它的計算結果如預期。

這是對我來說蹭。當我在獨立的beanshell環境中運行它時,例如bsh-2.0b5.jar,它的代碼示例按預期工作。只有在JMeter中我必須依賴.equals(「X」)。

這感覺有點像一個錯誤。