在使用 httprunner 進行介面測試的時候,最常用到的一類斷言方式就是判斷介面返回的響應狀態碼,所以這裡對各型別的 http 響應狀態碼進行簡要介紹。
http 狀態碼(http status code):是用以表示伺服器對請求進行響應後,表示結果狀態的3位數字**。被置於響應頭的第一行(也叫響應行)中。以 firefox 瀏覽器自帶網路功能抓包為例,在「狀態碼」一項中可以清晰看到。狀態碼後面緊跟的是「訊息短語」,可以看成對狀態碼的最精簡解釋說明。
如圖,狀態碼:200, 訊息短語:ok,代表此請求的響應是成功完成的。
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
3. 304 未改變
如果瀏覽器端的快取檔案已經過期,則瀏覽器自己無法自己決定該檔案是否還可以繼續使用,此時需要向伺服器傳送請求來詢問。伺服器判斷此段時間以來,該檔案是否被改變過,如果沒有改變過,則說明瀏覽器端的快取檔案依然可以使用,就向瀏覽器傳送 304 訊息(只有響應頭沒有響應體),瀏覽器收到後直接讀取快取檔案內容呈現到頁面。當然,如果伺服器判斷該檔案被修改過,會重新向瀏覽器傳送 200 訊息(重新傳送最新檔案)。
4. 401 未經許可,認證失敗
請求失敗,請求資源的時候沒有通過認證,鑑權失敗了。
5. 404 未找到
請求失敗,請求的資源在伺服器上沒有找到。
注意:一般發生這種錯誤,不意味著伺服器端**的錯誤,往往是由於自己編寫的 url 或者檔名稱錯誤,需要自行檢查。
6. 500 伺服器內部錯誤
HTTP響應狀態碼
1 請求收到,繼續處理 2 操作成功收到,分析 接受 3 完成此請求必須進一步處理 4 請求包含乙個錯誤語法或不能完成 5 伺服器執行乙個完全有效請求失敗 100 客戶必須繼續發出請求 101 客戶要求伺服器根據請求轉換http協議版本 200 交易成功 201 提示知道新檔案的url 202 接受...
HTTP 響應狀態碼
100 continue 初始的請求已經接受,客戶應當繼續傳送請求的其餘部分。101 switching protocols 伺服器將遵從客戶的請求轉換到另外一種協議。200 ok 一切正常,對get和post請求的應答文件跟在後面。201 created 伺服器已經建立了文件,location 頭...
HTTP響應狀態碼
1 資訊,伺服器收到請求,需要請求者繼續執行操作 2 成功,操作被成功接受並處理 3 重定向,需要進一步的操作以完成請求 4 客戶端錯誤,請求包含語法錯誤或無法完成請求 5 伺服器操作,伺服器在處理請求的過程中發生了錯誤 1xx 臨時響應 表示臨時響應並需要請求者繼續執行操作的狀態碼。100 繼續 ...