強!10.6K star,一款開源HTTP測試工具,適合新手,簡單、容易上手!

大家好,我是狂師!

今天給大家推薦一款開源的HTTP測試工具:Hurl,相比curlwget功能更強大,且更容易上手、很適用新手使用。

1、項目介紹

Hurl是一個使用Rust語言開發的命令行工具,它允許用戶運行以簡單純文本格式定義的HTTP請求。這個工具不僅適用於獲取數據,還非常適合用於測試HTTP會話和API。

項目地址:

https://github.com/Orange-OpenSource/hurl

Hurl的主要特性和用途包括但不限:

  • 請求發送與捕獲:Hurl可以發送HTTP請求,並捕獲響應中的值。這使得用戶可以方便地執行各種HTTP操作,並收集所需的響應數據。
  • 查詢與評估:Hurl支持對標頭和正文響應進行查詢和評估。用戶可以使用XPath和JSONPath等多種查詢方式,以滿足不同的測試需求。
  • 鏈式調用:Hurl支持多個請求的鏈式調用,這使得用戶可以方便地構建複雜的測試用例,從而更全面地測試HTTP會話或API。
  • 集成與報告:Hurl易於集成到CI/CD(持續集成/持續部署)流程中,支持生成多種格式的報告,如文本報告、JUnit報告和HTML報告,這有助於用戶分析和理解測試結果。
  • 適用於多種場景:Hurl不僅適用於REST/JSON API的測試,還適用於HTML內容、GraphQL以及SOAP API等多種場景。

總的來說,Hurl是一個非常靈活且功能豐富的命令行工具,它不僅可以發送HTTP請求,還可以將這些請求鏈接在一起,形成請求鏈。這個特性使得Hurl在模擬複雜的用戶交互場景時特別有用。此外,Hurl還能夠捕獲請求中的特定值,並對響應頭部和響應正文中的信息進行查詢和評估。
無論是對於初學者還是經驗豐富的測試人員,Hurl都是一個值得考慮的選擇。

2、不同平臺安裝下載

Hurl作爲一個功能強大的命令行HTTP請求工具,其安裝步驟在不同的操作系統上會有所不同。以下是針對各個平臺的安裝操作步驟:

  • Mac用戶:可以通過Homebrew來安裝Hurl。在終端中輸入命令,按照提示完成安裝過程。
brew install hurl
  • Windows用戶:可以訪問Hurl的GitHub發佈頁面,下載最新版本的安裝包,然後按照提示進行安裝。
https://github.com/Orange-OpenSource/hurl/releases

  • Linux用戶:可以使用包管理器來安裝Hurl。例如,在基於Debian的系統上,可以使用apt-get install hurl命令來安裝。

3、Hurl使用

1、GET請求

# Get home:
GET https://example.org
HTTP 200
[Captures]
csrf_token: xpath "string(//meta[@name='_csrf_token']/@content)"


# Do login!
POST https://example.org/login?user=toto&password=1234
X-CSRF-TOKEN: {{csrf_token}}
HTTP 302

2、POST請求

POST https://example.org/api/tests
{
    "id": "4568",
    "evaluate": true
}
HTTP 200
[Asserts]
header "X-Frame-Options" == "SAMEORIGIN"
jsonpath "$.status" == "RUNNING"    # Check the status code
jsonpath "$.tests" count == 25      # Check the number of items
jsonpath "$.id" matches /\d{4}/     # Check the format of the id

Hurl雖是一個命令行工具,但Hurl的主要使用方式是通過編寫Hurl文件,這些文件包含了要發送的HTTP請求的定義。然後,用戶可以通過Hurl命令行工具來運行這些文件,發送請求並獲取響應。

示例一:發送GET請求並輸出響應

1、創建Hurl文件內容 (example1.hurl)

GET https://api.example.com/data

2、執行命令行

hurl example1.hurl

example1.hurl 是包含HTTP請求的Hurl文件。
執行此命令後,Hurl會發送一個GET請求到https://api.example.com/data,並在終端輸出服務器的響應。

示例二:發送POST請求並攜帶JSON數據

1、創建Hurl文件內容 (example2.hurl)

POST https://api.example.com/create  
Content-Type: application/json  
  
{  
  "name": "John Doe",  
  "age": 30  
}

2、執行命令行

hurl example2.hurl

執行命令後,Hurl會發送POST請求到https://api.example.com/create,並在請求體中攜帶JSON數據。

示例三:使用變量和鏈式請求

1、創建Hurl文件內容 (example3.hurl)

GET https://api.example.com/user/123  
  
# 捕獲響應中的token  
{{token}} = response.headers.get("X-Auth-Token")  
  
GET https://api.example.com/data  
Authorization: Bearer {{token}}

2、執行命令行

hurl example3.hurl

3、執行解釋:

  • 第一個GET請求用於獲取用戶的認證token。
    {{token}} = response.headers.get("X-Auth-Token") 這行代碼捕獲響應頭中的X-Auth-Token值,並將其存儲在token變量中。
  • 第二個GET請求使用了前面捕獲的token變量作爲Authorization頭的值,用於後續的認證。
  • 執行命令後,Hurl會按照順序執行兩個請求,並在第二個請求中使用第一個請求的響應數據。

示例四:包含斷言和隱式驗證

1、創建Hurl文件內容 (example4.hurl)

GET https://api.example.com/status  
  
# 隱式驗證:檢查狀態碼是否爲200  
HTTP/1.1 200  
  
# 顯式斷言:檢查響應體是否包含特定文本  
assert contains(response.body, "OK")

2、執行命令行:hurl example4.hurl

3、執行解釋

  • 發送GET請求到https://api.example.com/status。
  • 隱式驗證是通過在Hurl文件中直接指定期望的HTTP狀態碼(這裏是200)來完成的。如果服務器的響應狀態碼與指定的不同,Hurl會報錯。
  • 顯式斷言使用assert關鍵字來檢查響應體是否包含"OK"文本。如果不包含,測試將失敗。

這些示例展示了Hurl的基本用法和一些高級特性,如變量捕獲、鏈式請求和斷言驗證。

你可以根據自己的需求,結合Hurl的文檔和這些示例,構建更復雜的HTTP測試場景。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章