2013-01-16 46 views
0

我有ThreadGroup1它在那裏獲得使用CSV數據集配置從CSV文件的憑據執行登錄操作,並在兩個不同的變量保存的用戶名和密碼,如:傳遞多個值線程組之間 - 的JMeter

${__setProperty(USERNAMEGlobal, ${USERNAME})} 
${__setProperty(PASSWORDGlobal, ${PASSWORD})} 

現在ThreadGroup2我用用這些憑據:

${__property()} 

它工作正常爲單個用戶,但如果我嘗試多個用戶(請求),最後一個值將覆蓋以前的所有值只有最後憑據定義ThreadGroup2接收。

我希望所有憑證都能逐個傳遞給ThreadGroup2,然後ThreadGroup2中的請求應該分別根據所有這些憑證工作。

這是如何做到的? PS:我定義的上升週期= 1,用戶數量= 3,迴路= 1。

回答

0

有一些選項:

  • Inter-Thread Communication
  • 把他們不同的屬性:

    ${__setProperty(USERNAMEGlobal1, ${USERNAME1})} 
    ${__setProperty(USERNAMEGlobal2, ${USERNAME2})} 
    etc. 
    
  • 初始化數組與所有的用戶名,stringify,然後把財產。但是,它看起來像一個黑客,會減慢你的計劃。
+0

我無法做到這一點,因爲我們有隨機數的用戶每次在csv文件中定義。任何其他方式? –

+0

「用所有用戶名初始化數組,然後將其置入屬性,然而,它看起來像是一個破解你的計劃的黑客。」 ... 這個怎麼做?我對Jmeter沒有太多的經驗,你能告訴我如何實現這個嗎? ...代碼片段? –

0

看起來您可以將所有用戶名 - 密碼對保存到ThreadGroup1中的文件csv-file中,然後通過例如在ThreadGroup2中重新使用它們。用CSV Data Set Config閱讀。

+0

我正在這樣做...但現在我只在ThreadGroup1中讀取它們一次,然後使用__setProperty(如上所述)設置並獲取變量,但遇到問題(在問題中提到) –

+0

對不起,也許我失蹤了東西,但不明白理由用csv改變一個簡單的工作解決方案(看起來你必須在TG2中使用與TG1中相同的csv列表)以繁瑣的與在線程組之間傳遞多個屬性?我懷疑爲每個用戶存儲2個屬性比從ThreadGroup2中的csv再次讀取相同的憑證更節省資源。有什麼理由呢? –

+0

我只從threadGroup1中讀取csv文件,然後使用TG2中的所有變量我這樣做是因爲我將其他一些變量也傳遞給TG2,這些變量是用戶特定的。如果我在TG2中單獨讀取CSV,它會向用戶提供錯誤的變量。 ..例如,如果user1應該有變量1,它可能會得到實際上應該提供給User2的變量2。我希望每個用戶都可以在TG2中傳遞特定的變量... PS:這些變量是我在TG1中提出的一些請求的結果。 –

0

我想知道你是否真的需要兩個獨立的ThreadGroups?

好像你只需要一個線程組內,你應該執行你的登錄操作,然後保存用戶/在傳遞參數瓦爾,而不是在道具。變量是線程本地的,所以一個線程的值不會覆蓋另一個線程的值。

您可以在腳本中設置變量:vars.put("var_name", "var_value"),然後像${var_name}一樣使用它。 Another選項設置變量。