Jmeter系列(22)- 詳解 HTTP 請求默認值


如果你想從頭學習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、端口、編碼、請求數據等等),取值的順序(優先級)是:

  1. HTTP 請求本身設置的值
  2. HTTP 請求下的 HTTP 請求默認值設置的值
  3. 線程組下的 HTTP 請求默認值設置的值

 

最后一句話

有多個 HTTP 請求默認值時,除了參數列表或請求體數據是會拼接之外,其他字段值的取值順序就是按照上述的順序來走的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM