介紹
隨著 Web 應用的復雜性增加,API 測試已成為開發中不可或缺的一部分,無論是前端還是后端開發,確保 API 正常運行至關重要。
Postman 長期以來是開發者進行 API 測試的首選工具,但是很多基本功能都需要登陸才能使用,例如創建和管理 Collections(請求集合),這對開發者并不友好。
Postwoman(現已更名為 Hoppscotch)是?Postman 的開源替代品。Hoppscotch 保留了 Postman 的核心功能,同時擁有更輕量、直觀的界面,且完全開源,允許開發者自由修改和擴展。
版權問題
官網指出:? Hoppscotch Community Edition 是免費和開源的,可以將其用于個人和商業項目,是個人和小型團隊的絕佳選擇。
Hoppscotch Community Edition is free and open-source. It is licensed under the MIT License. You can use it for personal and commercial projects. It is a great choice for individuals and small teams.
一張圖了解基本功能
本文重點介紹?Hoppscotch?在單機版環境下的使用,而非團隊協作功能。對于大多數開發者而言,進行 API 測試時往往更多依賴于個人需求,無需依賴登錄賬戶或與他人協作。
界面上的主要功能包括以下
請求類型選擇:
- 位于界面頂部,可以選擇不同的 HTTP 請求類型(GET、POST、PUT、DELETE、PATCH、OPTIONS、HEAD),用于測試不同類型的 API 操作。
請求 URL:
- 在輸入框中,可以輸入完整的 API 請求 URL,支持自動補全功能,幫助快速輸入。
請求參數:
- Query Params:可以通過鍵值對形式輸入 URL 查詢參數,自動添加到請求 URL 后面。
- Body:用于發送請求體(例如 POST 請求的 JSON、表單數據等)。支持不同的格式(JSON、form-data、x-www-form-urlencoded 等)。
- Headers:可以自定義請求頭部,添加內容類型、身份驗證信息等。
權限(Authorization):
- 允許選擇不同的授權方式,如 Basic Auth、Bearer Token、OAuth2 等,用于向 API 發送帶有身份驗證信息的請求。
請求按鈕:
- Send 按鈕用于發送請求,執行 API 調用。
響應部分:
- 響應體:顯示從服務器返回的響應內容,支持 JSON 格式的格式化顯示,方便開發者查看響應數據。
- 狀態碼:顯示響應的 HTTP 狀態碼(如 200、404、500 等),幫助開發者判斷請求的成功與否。
- 響應時間:顯示請求的響應時間,幫助開發者評估 API 的性能。
- 響應頭:展示響應的 headers,提供關于返回的元數據(如 Content-Type、Cache-Control 等)。
環境管理:
- 可以設置多個環境(如開發環境、生產環境等),并在不同的環境中切換,避免手動修改 URL 或變量。
歷史記錄:
- 提供請求歷史記錄功能,用戶可以查看和重用之前發送過的請求,便于測試和調試。
控制臺輸出:
- 顯示發送請求和接收響應的詳細日志,幫助開發者調試請求的各個環節。
WebSocket 支持:
- 支持 WebSocket 請求,可以實時發送和接收消息,測試與 WebSocket 協議的 API 交互。
處理請求
- 發送請求:可以發送各種類型的 HTTP 請求(如 GET、POST、PUT、DELETE 等)來與服務器進行交互,檢查接口的行為和響應。
- 請求參數:可以在請求中設置參數,包括查詢參數(Query Params)、請求體(Body)、URL 參數等,用于模擬不同的 API 調用場景。
- 請求頭:支持自定義請求頭(Headers),如設置 Content-Type、Accept、User-Agent 等,用于控制請求的格式、類型或進行身份驗證等。
- 權限 Authorization:支持多種授權方式,如 Basic Auth、Bearer Token 等,幫助開發者在發送請求時添加授權信息,確保請求的合法性。
- 響應處理:在發送請求后,Postwoman 會顯示響應數據,包括響應體(Response Body)、狀態碼(Status Code)、響應時間(Response Time)等,幫助開發者分析 API 響應的準確性和性能。
環境變量
變量類型
在 Hoppscotch 中,常用的變量類型包括 全局變量 和 環境變量:
-
全局變量:這些變量可以在整個 Hoppscotch 中訪問,適用于所有請求和環境。它們的作用范圍最廣,適合存儲在不同測試中需要共享的數據。
-
環境變量:這些變量的作用范圍限于特定的環境。環境變量非常適用于需要為不同環境(例如生產環境和暫存環境)提供相同變量集的場景。通過使用環境變量,可以方便地切換和管理不同環境下的配置和數據。
創建環境
添加環境變量
訪問環境變量
通過以下格式引用變量來訪問請求部分中的變量 <<variable_name>>
腳本
Hoppscotch 提供了一個特殊的 pw 對象,其中包含了用于編寫腳本和進行 API 測試的多種方法。該 pw 對象是全局可用的,可以通過直接引用其名稱來訪問和調用這些方法,方便地在測試過程中執行各種操作和自定義邏輯。
Hoppscotch 的腳本編輯器中附有很多代碼模板,用戶可以直接鼠標點擊使用模板,然后修改模板中的參數即可,無需擔心腳本不會寫的問題。
請求前腳本?Pre-request Script
設置環境變量
pw.env.set()?可以直接用于快速方便的環境變量定義。它可用于更好地組織請求代碼。
pw.env.set("baseURL", "https://httpbin.org");
pw.env.set("method", "get");
這些變量可以在請求部分中訪問,方法是在雙尖括號?<<variable_name>>?中引用它們。
?
生成 random Values 以測試 API
以將?<<randomValue>>?添加到端點 URL 為例子:
https://reqres.in/api/users/<<randomValue>>
現在,在 pre-request script 選項卡中添加以下邏輯:
var random = Math.floor(Math.random() * 10);
pw.env.set("randomValue", random.toString());
這將為環境變量?randomValue?分配一個隨機數,API 將返回與該隨機值關聯的隨機用戶。
?
請求后測試?Post-request Script?
假設某個請求的響應數據如下:
{"data": {"id": 10,"email": "byron.fields@reqres.in","first_name": "Byron","last_name": "Fields","avatar": "https://reqres.in/img/faces/10-image.jpg"},"support": {"url": "https://contentcaddy.io?utm_source=reqres","text": "Tired of writing endless social media content?"}}
測試響應狀態碼
pw.test("Response is ok", () => {pw.expect(pw.response.status).toBe(200);
});
斷言響應數據有效
pw.test("Check first name", () => {const user = pw.response.body.data;pw.expect(user.first_name).toBe("Byron");pw.expect(user.first_name).toBeType("string");
});
參考
Introduction to Hoppscotch - Hoppscotch Documentation