使用 pyhttptest 輕鬆測試 REST API

  • 2020 年 2 月 15 日
  • 筆記

現在,我們每個人都面臨著 REST API,要麼開發這樣的服務,要麼使用這樣的服務。 此外,我們正處於微服務的時尚時代,我們將業務邏輯分割成獨立於每個服務的小型獨立服務。 這些服務大多遵循 RESTful 原則,並使用 JSON 格式進行通信,由於其簡單性,JSON 格式成為最廣泛使用的格式​。

pyhttptest 命令行工具,用於通過 RESTful api 進行 HTTP 測試。

這個工具通過簡單的三個步驟自動化測試

  1. 安裝
pip install pyhttptest
  1. 用文件中最簡單且廣泛使用的格式 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/"    }  ]
  1. 運行命令並獲取報告
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