Stories

Detail Return Return

利用 pyhttptest 快速測試和調試 RESTful API - Stories Detail

現在,無論是開發還是使用服務,我們每個人都面臨着 REST API 的挑戰。同時,我們正處於微服務的流行時代,我們將業務邏輯拆分為多個獨立的小服務。這些服務大多遵循 RESTful 原則,並使用 JSON 格式進行通信,因為其簡單性使其成為最廣泛使用的格式。

pyhttptest - 這是一個命令行工具,用於對 RESTful APIs 進行 HTTP 測試。

此工具通過三個簡單的步驟實現自動化測試。

1. 安裝軟件包

pip install pyhttptest

2. 描述針對您的 API 服務的 HTTP 請求測試用例

使用簡單且廣泛使用的 JSON 格式在文件中描述您的 HTTP 請求測試用例。

單個測試用例定義示例

  • 發送一個 HTTP GET 請求

    • 創建一個JSON文件,例如,data/test_server_status.json
    {
      "name": "TEST: Get server status",
      "verb": "GET",
      "endpoint": "/get",
      "host": "https://httpbin.org",
      "headers": {
        "Accept-Language": "en-US"
      }
    }
  • 發送一個 HTTP POST 請求

    • 創建一個 JSON 文件,例如,data/test_create_html_bin.json
    {
      "name": "TEST: Create an HTML bin",
      "verb": "POST",
      "endpoint": "post",
      "host": "https://httpbin.org",
      "payload": {
        "content": "Hello, world!"
      }
    }

多個測試用例定義示例

  • 創建一個 JSON 文件,例如,data/requests.json
[
  {
    "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": "admin@pyhttptest.com"
    }
  },
  {
    "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/"
  }
]

3. 運行命令並獲得報告

pyhttptest execute data/test_server_status.json

單個測試用例的報告

pyhttptest execute data/requests.json

多個測試用例的報告

您可以傳遞給.json文件的屬性包括:

  • name - 測試用例的名稱。
  • verb - HTTP 方法。
  • endpoint - 您想要在服務器上調用的資源。
  • host - 服務器主機地址。
  • headers - HTTP 頭部。支持所有 HTTP 頭部字段。
  • query_string - URL 問號後的查詢字符串參數。
  • payload - 數據。

最佳實踐

您可能會問,在我的現有/新項目中如何添加、結構和組織測試用例。每個含有測試的 Python 項目都會在其項目目錄中有一個名為tests/的文件夾。

根據慣例,像unittestpytest這樣的框架會發現並執行 Python 腳本中定義的測試用例。為了不混淆這些測試並保持慣例,我建議在項目根目錄創建一個名為live_tests/的新目錄。

在這個新目錄中,您可以放入所有定義 API 測試用例的.json文件。這樣做可以輕鬆區分您的測試,但這真的取決於您!

user avatar linlinma Avatar segmentfault Avatar zourongle Avatar daqianduan Avatar yuanjihua_5d954fd2a3238 Avatar wmbuke Avatar yulong1992 Avatar licin Avatar milton Avatar ldh-blog Avatar weishiledanhe Avatar autohometech Avatar
Favorites 95 users favorite the story!
Favorites

Add a new Comments

Some HTML is okay.