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

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

[
{
    "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腳本爲:shell

// 讀文本文件
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]);

}

這樣就能夠在腳本請求中設置參數爲:dom

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

  這樣,每條記錄都不同了。知足了測試的須要。測試

歡迎關注公衆號:google

相關文章
相關標籤/搜索