JMeter提供了豐富的配置元件,常用的包括參數化配置元件、HTTP請求默認值、HTTP信息頭管理器、計數器等,這些配置元件用於設置默認值和變量,提供給后面的sampler(取樣器)使用。
提示:本文同時演示了,使用消息體數據選項頁,配置Post請求的參數。
1、用於演示的項目說明
我們使用JMeter發送Post請求,以學院管理系統項目為例。
接口文檔如下:
學院-新增
1) 請求方法:POST
2) 請求地址:http://127.0.0.1:8000/api/departments/
3) 請求JOSN報文:(需要Content-Type=application/json)
4) 調用傳入的json串如下(可新增多條,之間用,隔開):
{
"data": [
{
"dep_id":"T01",
"dep_name":"Test學院",
"master_name":"Test-Master",
"slogan":"Here is Slogan"
}
]
}
5) 新增成功返回報文:
{
"already_exist": {
"results": [],
"count": 0
},
"create_success": {
"results": [
{
"dep_id": "T02",
"dep_name": "Java學院",
"master_name": "Java-Master",
"slogan": "java"
}
],
"count": 1
}
}
6) 新增失敗id已存在-返回報文:
{
"already_exist": {
"results": [
{
"dep_id": "T01",
"dep_name": "Test學院",
"master_name": "Test-Master",
"slogan": "Here is Slogan"
}
],
"count": 1
},
"create_success": {
"results": [],
"count": 0
}
}
7) 新增失敗json格式錯誤:
{
"status_code": 400,
"detail": "請求體參數格式錯誤。"
}
2、測試計划內包含的元件
添加元件操作步驟:
- 創建測試計划。
- 創建線程組:
選中“測試計划”右鍵 —> 添加 —> 線程(用戶) —> 線程組。 - 在線程組中添加配置元件"HTTP信息頭管理器"組件:
選中“線程組”右鍵 —> 添加 —> 配置元件 —> HTTP信息頭管理器。(稍后添加) - 在線程組里面添加取樣器“HTTP請求”組件:
選中“線程組”右鍵 —> 添加 —> 取樣器 —> HTTP請求。 - 在線程組里面添加監聽器“察看結果樹”組件:查看結果,
選中“線程組”右鍵 —> 添加 —> 監聽器 —> 察看結果樹。
最終測試計划中的元件如下:

點擊運行按鈕,會提示你先保存該腳本,腳本保存完成后會直接自動運行該腳本。
3、HTTP請求界面內容
我們按照接口文檔中學院-新增接口的描述,編寫JMeter取樣器,如下圖所示:

4、查看腳本執行結果
學院-新增接口調用如下:

我們可以看到上圖中,顯示接口請求失敗,返回的結果說該接口不支持請求中媒體類型text/plain。
我們來查看請求頭中的信息,如下:

發現請求頭中的Content-Type為text/plain。
因為我們之前說過,在JMeter 5.0以后的版本中發送POST請求時,將參數放在body data(消息體數據)中,且沒有設置Content-Type時,默認會將Content-Type的值設置為text/plain。
而接口文檔中學院-新增接口,明確寫出需要Content-Type的類型為application/json。
所以這時我們需要在請求頭信息中,重新定義Content-Type屬性的值。
5、添加請求頭信息(HTTP信息頭管理器)
在JMeter中添加請求頭信息和Postman是有區別的,需要在線程組中添加一個配置元件,名為HTTP信息頭管理器(HTTP Header Manager)。也就是需要在HTTP信息頭管理器組件中,為請求添加需要的請求頭信息。
添加配置元件步驟:選中“線程組”右鍵 —> 添加 —> 配置元件 —> HTTP信息頭管理器。
如下圖所示:

HTTP信息頭管理器界面如下:

界面說明:
- 名稱:HTTP信息頭管理器自定義名稱,見名知意最好。
- 注釋:即添加一些備注信息,對該HTTP信息頭管理器的簡短說明,以便后期回顧時查看。
- 請求頭中的信息:可以幫助測試人員設定JMeter發送的HTTP請求中,請求頭所包含的信息。HTTP信息頭中包含有
User-Agent、Referer等屬性。盡可能放在線程組下,除非因為某些原因,測試人員希望不同的HTTP請求使用不同的HTTP信息頭。
1)添加:可以添加一條請求頭配置信息。
2)從剪貼板添加:添加來自於剪切板中的信息;(使用key+制表符+value的形式,可以多行。)
3)刪除:選擇不需要的請求頭信息,可以進行刪除;
4)載入:載入配置好的信息頭文件。(我使用.txt文件,按上述格式配置,載入成功。工作中使用自己公司配置好的文件即可)
5)保存測試計划:就是把該測試計划保存。
如上圖,我們添加一條請求頭信息:Content-Type=application/json。
此時測試計划內包含的元件,如下圖所示:

再次發送請求,請求成功,如下圖:

我們再來看一下,該請求的請求頭信息:

可以看到請求中的Content-Type屬性為application/json。
以上就是HTTP信息頭管理器組件的使用方式,
6、優先級說明
HTTP信息頭管理器組件的優先級:
- JMeter中支持添加多個HTTP信息頭管理器組件,如果存在多個HTTP信息頭管理器組件,其中的配置信息會合並。
取樣器下HTTP信息頭管理器組件的優先級高於線程組下的HTTP信息頭管理器組件。- 若有重名的信息頭名稱,則優先
取樣器下的HTTP信息頭管理器組件中的配置信息。 - 同一作用域下,不論添加多少個HTTP信息頭管理器組件,只會取第一個HTTP信息頭管理器組件中的值,不合並。
提示:每個元件都有固定的圖標,我們多用就能區分出來。
7、補充:常見請求頭信息
Accept:告訴服務器,客戶機支持的數據類型。Accept-Encoding:告訴服務器,客戶機支持的數據壓縮格式。Cache-Control:緩存控制,服務器通過控制瀏覽器要不要緩存數據。Connection:處理完這次請求,是斷開連接還是保持連接。Cookie:客戶機通過這個可以向服務器帶數據。Host:訪問的主機名。User-Agent:告訴服務器,客戶機的軟件環境。Content-Type:用於指示資源的MIME類型。
