使用 pyhttptest 輕鬆測試 REST API
- 2020 年 2 月 15 日
- 筆記
現在,我們每個人都面臨著 REST API,要麼開發這樣的服務,要麼使用這樣的服務。 此外,我們正處於微服務的時尚時代,我們將業務邏輯分割成獨立於每個服務的小型獨立服務。 這些服務大多遵循 RESTful 原則,並使用 JSON 格式進行通訊,由於其簡單性,JSON 格式成為最廣泛使用的格式。
pyhttptest
命令行工具,用於通過 RESTful api 進行 HTTP 測試。
這個工具通過簡單的三個步驟自動化測試
- 安裝
pip install pyhttptest
- 用文件中最簡單且廣泛使用的格式 JSON 描述針對 API 服務的 HTTP 請求測試用例
- 發送 HTTP GET 請求 json文件內容如下
{ "name": "TEST: Get server status", "verb": "GET", "endpoint": "/get", "host": "https://httpbin.org", "headers": { "Accept-Language": "en-US" } }
—
- 發送 HTTP POST 請求 json文件內容如下
{ "name": "TEST: Create an HTML bin", "verb": "POST", "endpoint": "post", "host": "https://httpbin.org", "payload": { "content": "Hello, world!" } }
- 多個測試用例定義示例
[ { "name": "TEST: List all users", "verb": "GET", "endpoint": "api/v1/users", "host": "http://localhost:8085/", "headers": { "Accept-Language": "en-US" }, "query_string": { "limit": 1 } }, { "name": "TEST: Add a new user", "verb": "POST", "endpoint": "api/v1/users", "host": "http://localhost:8085/", "payload": { "username": "pyhttptest", "email": "[email protected]" } }, { "name": "TEST: Modify an existing user", "verb": "PUT", "endpoint": "api/v1/users/XeEsscGqweEttXsgY", "host": "http://localhost:8085/", "payload": { "username": "pyhttptest" } }, { "name": "TEST: Delete an existing user", "verb": "DELETE", "endpoint": "api/v1/users/XeEsscGqweEttXsgY", "host": "http://localhost:8085/" } ]
- 運行命令並獲取報告
pyhttptest execute data/filename.json
- 來自測試用例的報告截圖

測試用例的屬性
- name – 測試用例的名稱
- verb – HTTP 方法
- endpoint – 要在伺服器上調用的資源
- host – 伺服器主機地址
- headers – 一個 HTTP 報頭。所有的 HTTP 報頭
- query_string – 查詢字元串-在問號後面的 URL 中的查詢字元串參數
- payload – 數據
Tips
您可能會想到一個問題,如何將測試用例添加、結構和組織到我現有的 / 新的項目中。 每個 Python 項目,其中有測試包含在他的項目目錄一個文件夾即tests/。
從這個目錄按慣例,偉大的框架,如unittest and 及pytest發現並執行 Python 腳本中定義的測試用例。 為了不搞亂這些測試並打破常規,我建議在您的項目根目錄中創建一個名為live_tests/ 。
在新目錄中,可以將所有json文件,定義了 API 測試用例的文件。 通過這樣做,您的測試將很容易區分。
https://wx2.sinaimg.cn/mw690/6374f516ly1gb288ffq39j206n06r3yx.jpg