jmeter beanshell 從文件中獲取隨機參數


loadruner 參數化有個功能,可以設置在腳本每次出現參數時,自動更換參數值。在做jmeter自動化測試過程中,同一個請求中出現多個參數值,如一個接口可以添加n個信息的請求

[
{
    "name": "baidu",
    "url": "http://www.baidu.com",
    "page": 88,
    "isNonProfit": true
},
{
    "name": "google",
    "url": "http://www.google.com",
    "page": 88,
    "isNonProfit": true
},
{
    "name": "163",
    "url": "http://www.163.com",
    "page": 88,
    "isNonProfit": true
}
]

把name,url ,page ,isNonProfit 參數化,但是這參數實際發送請求的時候都會重復,即如果name 參數選擇的是baidu,其他集體記錄也是baidu。所以jmeter 原來的配置參數功能無法滿足這個需求,只有修改使用beanshell 先從文本中隨機讀取n條參數(這里的n是3).beanshell腳本為:

// 讀文本文件
public static String lineContent(int lineNumber) throws IOException {
    File file = new File("D:/jscript/bid.txt");//文件路徑
    FileReader fileReader = new FileReader(file);
    InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "UTF-8");
    BufferedReader reader = new BufferedReader(isr);
    String txt = "";
    int lines = 0;
    String content = "";
    while (txt != null) {
        lines++;
        txt = reader.readLine();
        if (lines == lineNumber) {
            content = txt;
        }
    }
    reader.close();
    fileReader.close();
    return content;
}
// 獲取隨機數
public static int getRand(int max, int min) {
    Random random = new Random();
    return random.nextInt(max) % (max - min + 1) + min;
}

public static ArrayList getParameters() throws IOException{
    ArrayList list=new ArrayList();
    while (list.size() != 3) {
        int lineNumber = getRand(2330, 2); // 參數文件最大行數為2330 
        String lineContent = lineContent(lineNumber);
        if (!list.contains(lineContent)) {
            list.add(lineContent);
        }
    }
   return list;
}
//開始執行的地方
ArrayList list  = getParameters();
for(int i=0;i<list.size();i++){
    String line = list.get(i);
    String[]  item = line.split("\\t");
     System.out.println(item[2]);
     vars.put("name"+String.valueOf(i),item[0]);
     vars.put("url"+String.valueOf(i),item[1]);
     vars.put("page"+String.valueOf(i),item[2]);
     vars.put("isNonProfit"+String.valueOf(i),item[3]);

}

這樣就可以在腳本請求中設置參數為:

[
{
    "name": "${name0}",
    "url": "${url0}",
    "page": ${page0},
    "isNonProfit": ${isNonProfit0}
},
{
    "name": "${name1}",
    "url": "${url1}",
    "page": ${page1},
    "isNonProfit": ${isNonProfit1}
},
{
    "name": "${name2}",
    "url": "${url2}",
    "page": ${page2},
    "isNonProfit": ${isNonProfit2}
}
]

  這樣,每條記錄都不一樣了。滿足了測試的需要。

歡迎關注公眾號:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM