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