參考:JMeter 壓力測試使用函數和 CSV 文件參數化 json 數據http://blog.csdn.net/defonds/article/details/40824011
結合自己的實踐經驗重新整理如下:
說明:筆者使用的是Jmeter 3.0,本文主要是介紹如何使用JMeter的提交 json,以及將其參數化。示例的http請求只是用於驗證提交json是否成功,是否成功參數化,並不是真實有效的請求。
1、先準備一個csv文件,我這裏只是簡單地寫了一個,兩列數據,並將文件放到E盤的根目錄中,
然後在Jmeter中添加一個CSV Data Set Config (在配置元件中),將文件的絕對路徑+文件名稱+後綴填入,所以我填入E:\1233.csv到“Filename”中,併爲csv文件的列定義一個變量名,我這裏定義爲Num、Letter,注意變量名之間使用英文狀態下的逗號進行隔開。
2、
(1)添加http sampler,並設置爲post請求,
(2)打開Body Data頁,設置Json格式,並參數化,使用 ${變量名}。
(3)參數化時,可以直接設置
{
"number":"${Num}",
"letter":"${Letter}"
}
也可以加上一些常量進行組合,如
{
"number":"我是數字${Num}",
"letter":"我是字母${Letter}"
}
3、設置線程組的併發數量等參數,
(1)我剛剛準備的文件一共14條數據,我這裏設置一共發送16次請求,
(2)添加“察看結果樹”(在監聽器裏),然後點擊運行按鈕,查看請求信息,
4、通過結果樹,我們發現Jmeter發送的postData已經成功讀取csv文件的數據,併成功參數化。
5、在本次測試中發現,當請求數大於數據源數量時,Jmeter會自動循環讀取數據,本次測試的第15請求就是讀取的第一行的數據。
這是因爲在csv配置中,設置了 recycle on EOF 爲true;stop thread on EOF爲false,
當Jmeter讀完了一輪數據時,還有線程待運行,那麼線程會循環讀取csv的數據。
EOF:end of file;
其他問題
1、步驟中還可“爲該採樣器添加 HTTP 信息管理器”,此功能是爲了通過服務器的Json類型合法性校驗。
操作步驟如下:鼠標右擊該採樣器,右鍵菜單選擇 "添加" -> 配置元件 -> HTTP 信息頭管理器,然後信息頭添加一條名稱爲Content-Type,值爲 application/json即可: