最近有同事在測試過程中遇到需要造批量測試數據的問題,這些數據往往是同一種單據,但是單據的內容不同,如果手工創建就比較費時費力。那我們用jmeter的csv文件來讀取測試數據就完美解決了這個問題。
我們今天使用Jmeter5.1.1調用博客園的開放API來舉例,接口信息如下:
獲取新聞內容
Url: http://wcf.open.cnblogs.com/news/item/{CONTENTID}
HTTP Method: GET
csv文件准備
- 新建一個文本文檔,然后把后綴.txt改成.csv,使用notepad或者記事本打開(這里使用的是notepad)
- 將我們的批量測試數據 CONTENTID(新聞Id)寫進來
添加CSV數據文件設置
- 添加CSV數據文件設置:打開jmeter -> 右鍵測試計划 -> 添加配置元件 -> CSV 數據文件設置
創建HTTP請求
- 創建HTTP請求:打開Jmeter -> 右鍵測試計划 -> 添加-線程-線程組 -> 右鍵線程組 -> 添加-取樣器-HTTP請求
- 添加查看結果樹:右鍵HTTP請求 -> 添加-監聽器-查看結果樹
- 將上面的接口信息復制到HTTP請求中,一切准備就緒如下圖:
運行並查看結果
-
設置線程數和循環次數后啟動(這里我設置的是1個線程循環15次):
-
查看結果樹,發現的CONTENTID已經是CSV數據文件中的數據了,響應數據就是對應Id的內容。
最后,我們回到開始的問題,造大量的不同內容的相同單據。我們使用CSV文件來存不同的內容,使用jmeter來循環調用創建數據的接口,這樣就不用手動再去創建單據了,既省時又省力。
CSV文件設置參數說明:
參數 | 說明 |
---|---|
文件名 | 你的CSV數據文件的路徑 |
文件編碼 | 例如可以是UTF-8。那么jmeter就會以UTF-8讀取文件 |
變量名稱 | 以逗號分隔的名稱列表,它與CSV文件中的列相匹配。 |
忽略首行 | 如果第一行是列名而不是測試數據,就選擇True忽略掉列名 |
分隔符 | 默認為','也可以設置為其他值(建議使用默認) |
是否允許帶引號 | 默認為False,如果測試數據中帶有引號則設置為Ture |
遇到文件結束符再次循環 | 默認為True,意思讀完最后一行在回來讀取第一行 |
遇到文件結束符停止線程 | 讀完最后一行停止線程 |
線程共享模式 | 定義如何在並發線程之間分配值 |