如果你想從頭學習Jmeter,可以看看這個系列的文章哦
https://www.cnblogs.com/poloyy/category/1746599.html
HTTP 請求默認值界面介紹
乍眼一看,其實跟 HTTP Request 的界面基本一樣,少了一點點東西而已,所以這里就不介紹每個字段的含義了,來說下注意事項
重點
- HTTP 請求默認值可以直接添加到線程組下面,也可以添加到某個 HTTP 請求下面
- 如果是在線程組下的 HTTP 請求默認值,那么它的作用域就是該線程組下的所有 HTTP 請求,包括子級、孫子級、孫孫子級的 HTTP 請求
- 如果實在某個 HTTP 請求下的 HTTP 請求默認值,那么它的作用域就只針對這個 HTTP 請求
- 線程組的 HTTP 請求默認值的優先級小於HTTP 請求下的 HTTP請求默認值
- 當然啦,所有 HTTP 請求默認值的優先級都比 HTTP 請求低
光理論很難理解,我們來看個栗子
測試計划樹結構
一個線程組下的 HTTP 請求默認值(1),兩個 HTTP 請求下的HTTP 請求默認值(2、3)
第一個 HTTP 請求默認填寫的內容
設置了:協議、host、端口、編碼、參數
第二個 HTTP 請求默認填寫的內容
設置了:host、端口、路徑
第三個 HTTP 請求默認填寫的內容
設置了:host、編碼、參數列表
看看 Flask-json 的請求體和響應體吧
可以看到
- 【2--請求默認值】里設置的host、端口、路徑把【1--請求默認值】設置的覆蓋掉了
- 又因為【1--請求默認值】設置了編碼和參數列表,而【2--請求默認值】沒有設置,所以直接拿了【1--請求默認值】的值
- 但有個問題,HTTP 請求本身有設置請求數據(JSON),請求數據是不會被覆蓋的,而會把【1--請求默認值】的參數列表和 JSON 數據拼接在一起,拼接后的數據結構是錯誤的,所以請求會報錯
- 即使 HTTP 請求默認值里面設置的是 JSON 數據,也不會合二為一,仍然會報錯(如下圖)
看看圖片文件上傳接口的請求體和響應體吧
可以看到
- 【2--請求默認值】里設置的host、編碼把【1--請求默認值】設置的覆蓋掉了
- 而這個 HTTP請求的請求數據是也是參數列表形式傳參的,這樣就可以拼接成功了
- 最終會把兩個請求默認值的參數列表拼接起來再傳遞,即使參數名一樣,仍然會分開傳,而不是覆蓋參數值(可見下面的擴展小栗子)
總結
HTTP 請求所需的各種字段值(host、端口、編碼、請求數據等等),取值的順序(優先級)是:
- HTTP 請求本身設置的值
- HTTP 請求下的 HTTP 請求默認值設置的值
- 線程組下的 HTTP 請求默認值設置的值
最后一句話
有多個 HTTP 請求默認值時,除了參數列表或請求體數據是會拼接之外,其他字段值的取值順序就是按照上述的順序來走的