天天看點

B06_接口測試前置知識補充:HTTP響應狀态碼

B06_接口測試前置知識補充:HTTP響應狀态碼

在使用 HttpRunner 進行接口測試的時候,最常用到的一類斷言方式就是判斷接口傳回的響應狀态碼,是以這裡對各類型的 HTTP 響應狀态碼進行簡要介紹。

B06_接口測試前置知識補充:HTTP響應狀态碼

HTTP 狀态碼(HTTP Status Code):是用以表示伺服器對請求進行響應後,表示結果狀态的3位數字代碼。被置于響應頭的第一行(也叫響應行)中。以 Firefox 浏覽器自帶網絡功能抓包為例,在“狀态碼”一項中可以清晰看到。狀态碼後面緊跟的是“消息短語”,可以看成對狀态碼的最精簡解釋說明。

如圖,狀态碼:200, 消息短語:OK,代表此請求的響應是成功完成的。

B06_接口測試前置知識補充:HTTP響應狀态碼

HTTP 的響應狀态碼主要分為五類,分别為從1到5開頭的三位數字:

  • 1xx: 代表消息
  • 2xx: 代表成功
  • 3xx: 代表重定向
  • 4xx: 代表用戶端錯誤
  • 5xx: 代表伺服器端錯誤

在進行接口測試的過程中,我們涉及比較多的有以下幾個:

1. 200 OK

  • 請求成功,伺服器已經正常響應。
  • 注意:傳回 200 不一定代表得到的就是我們預期的結果頁面,如登入成功打開系統桌面,此時傳回200狀态碼,但是不小心輸入了錯誤的使用者名和密碼,登入失敗仍然回到登入頁面,但此時伺服器傳回響應的狀态碼還是 200,說明這個過程中伺服器已經做完它認為正确的事情,而不是代表業務的正确性。是以在測試的時候,僅僅依靠200這個狀态碼進行斷言是不充分的。
  • HttpRuner 斷言寫法: - eq: [status_code, 200]

2. 301/302/307 永久移動/臨時移動/臨時重定向

  • 被請求的資源已經不在你請求的URL上了,需要去另外一個URL中擷取。
  • 注意:HttpRunner 的核心實際是 requests 子產品,而 requests 子產品在發送請求的時候,會預設自動完成重定向的操作,此時就無法從重定向前的頁面提取資料了。
  • 解決方法,在 request 關鍵字下增加: allow_redirects: False
B06_接口測試前置知識補充:HTTP響應狀态碼

3. 304 未改變

如果浏覽器端的緩存檔案已經過期,則浏覽器自己無法自己決定該檔案是否還可以繼續使用,此時需要向伺服器發送請求來詢問。伺服器判斷此段時間以來,該檔案是否被改變過,如果沒有改變過,則說明浏覽器端的緩存檔案依然可以使用,就向浏覽器發送 304 消息(隻有響應頭沒有響應體),浏覽器收到後直接讀取緩存檔案内容呈現到頁面。當然,如果伺服器判斷該檔案被修改過,會重新向浏覽器發送 200 消息(重新傳送最新檔案)。

4. 401 未經許可,認證失敗

請求失敗,請求資源的時候沒有通過認證,鑒權失敗了。

注意:碰到401基本上屬于鑒權的問題,可以在請求頭中附加 Authorization 認證資訊或者是從前一個頁面的響應中提取 cookie/token 等相關内容,再附加到新的請求中去。

5. 404 未找到

請求失敗,請求的資源在伺服器上沒有找到。

注意:一般發生這種錯誤,不意味着伺服器端代碼的錯誤,往往是由于自己編寫的 URL 或者檔案名稱錯誤,需要自行檢查。

6. 500 伺服器内部錯誤

伺服器無法完成對請求的處理。一般來說,伺服器端的源代碼出現錯誤時會出現這個問題。