使用 pyhttptest 輕松測試 REST API
現在,我們每個人都面臨着 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": "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/"
}
]
- 運行命令並獲取報告
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 測試用例的文件。 通過這樣做,您的測試將很容易區分。