2017-07-25 39 views
0

我使用jMeter 3.2編寫一些測試。我有一個帶有測試帳戶信息的CSV文件。每行包含用戶的登錄信息。每個用戶需要請求在以後的請求中使用的令牌。對CSV中的每個元素執行請求,而不是每個用戶

我的測試計劃:

Test plan

的獲得令牌請求檢索令牌。登錄請求登錄到用戶並返回另一個令牌。選擇客戶卡選擇一個客戶並返回最終的令牌。對於postprocesser的代碼是(我不是在這個經歷,所以任何建議表示讚賞):

import org.json.simple.JSONObject; 
import org.json.simple.parser.JSONParser; 

// Check if our map already exists 
if (props.get("map") == null) { 

    JSONObject obj = new JSONObject(); 
    obj.put("${department}", new String(data)); 
    log.info("Adding department to map. Department: ${department}. Token: " + new String(data)); 

    props.put("map", obj.toJSONString()); 

} else { 

    // Retrieve the current map 
    map = props.get("map"); 
    JSONParser parser = new JSONParser(); 
    JSONObject jobj = (JSONObject) parser.parse(map); 

    // Add the new department (with it's token) to the map 
    jobj.put("${department}", new String(data)); 
    log.info("Updating map for department. Department: ${department}. Token: " + new String(data)); 

    props.put("map", jobj.toJSONString()); 
} 

嘗試1: 我設置了一個曾經只控制器登錄用戶和檢索令牌。

現在讓我說我的CSV文件中有10行,但在我的測試中,我只想使用3個用戶並循環10次。會發生什麼是3個登錄請求被髮送(每個用戶一個)。這適用於第一次迭代。在2次迭代中,3個線程將使用沒有令牌的行4-6,從而失敗。

嘗試2: 我正在使用if控制器來檢查令牌是否已設置。我根本沒有這個工作。我向控制器中添加了一個beanshell預處理器,我試圖檢索該令牌。如果它爲空或空,我將令牌變量設置爲「」。在if控制器中,我檢查這個值。但是,是的。沒有運氣。

嘗試3 在Beanshell中檢查是否已經創建了令牌。如果沒有,請調用檢索它的測試片段。不幸的是,這似乎不可能。

可能值得注意的是,我將我的令牌存儲在屬性中,以便所有線程都可以訪問它。

如果您需要更多信息,請讓我知道。

+0

你能展示你的測試計劃嗎? – user7294900

+0

我已經添加了我的測試計劃 – Casper

+0

什麼是數據?你如何獲得數據並期望它成爲令牌?你怎麼在BeanShell中調用測試片段? – user7294900

回答

0

我想出了一個解決方案。實質上,我試圖做的是爲數據文件中的每一行存儲一個標記。

我這樣做是通過創建一個在其他線程組之前執行的setUp Thread Group來實現的。在此我循環訪問數據併爲每個數據存儲一個令牌。現在所有其他線程組都可以在運行時訪問這些線程組。