溫馨提示×

Linux中Swagger接口如何測試

小樊
46
2025-10-26 11:01:12
欄目: 智能運維

Linux環境下Swagger接口測試方法

1. 手動測試:通過Swagger UI直觀操作

Swagger UI是Linux下最常用的可視化測試工具,無需編寫代碼即可快速驗證接口。

  • 部署Swagger UI:通過Docker快速運行Swagger UI容器,映射端口到宿主機(如38081),確保能通過瀏覽器訪問。
    docker pull swaggerapi/swagger-ui:v4.15.5
    docker run -d -p 38081:8080 swaggerapi/swagger-ui:v4.15.5
    
  • 導入接口定義:打開瀏覽器訪問http://localhost:38081/swagger-ui.html,點擊“File”→“Import File”,上傳項目的swagger.jsonswagger.yaml文件(需提前從后端服務獲取,如Spring Boot項目的/v2/api-docs接口)。
  • 測試接口:在Swagger UI界面找到目標接口,點擊右側“Try it out”按鈕,輸入必填參數(如查詢條件的page、limit,POST請求的JSON body),點擊“Execute”發送請求。下方會顯示響應狀態碼(如200表示成功)、響應時間及各字段的具體值,便于快速驗證接口功能。

2. 命令行測試:使用curl發送HTTP請求

對于習慣命令行的用戶,curl是輕量級的測試工具,支持GET、POST等多種請求方式,適合快速驗證接口連通性。

  • GET請求(參數在URL中)
    curl "http://<server-ip>:<port>/api/user/query-user-info?page=1&limit=10"
    
  • POST請求(表單參數)
    curl -X POST "http://<server-ip>:<port>/api/factory/insert" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    -d "factoryName=TestFactory&no=123&remark=TestRemark"
    
  • POST請求(JSON參數)
    curl -X POST "http://<server-ip>:<port>/api/material/selectAll" \
    -H "Content-Type: application/json" \
    -d '{"factory":"TestFactory","materialName":"TestMaterial","offset":0,"page":1,"pageSize":10}'
    
  • 文件上傳
    curl -X POST "http://<server-ip>:<port>/api/all/order/money" \
    -F "file=@/path/to/local/file.xlsx" \
    -F "startTime=2025-01-01" \
    -F "endTime=2025-06-30"
    
    執行后,終端會輸出接口的響應內容(如JSON格式的數據),可直接查看結果。

3. 自動化測試:生成代碼并編寫測試腳本

若需要頻繁測試或集成到CI/CD流程,可通過Swagger Codegen生成客戶端代碼,再用測試框架(如Python的pytest、Java的JUnit)編寫自動化測試腳本。

  • 生成客戶端代碼:使用Swagger Codegen CLI讀取接口定義文件,生成指定語言的客戶端代碼(以Python為例)。
    wget https://repo1.maven.org/maven2/io/swagger/codegen/v3/swagger-codegen-cli/3.0.44/swagger-codegen-cli-3.0.44.jar -O swagger-codegen-cli.jar
    java -jar swagger-codegen-cli.jar generate -i http://localhost:8080/v2/api-docs -l python -o ./generated-client
    
  • 編寫測試腳本:進入生成的代碼目錄,使用pytestrequests庫編寫測試用例(如測試獲取用戶列表接口)。
    import pytest
    import requests
    
    BASE_URL = "http://localhost:8080/api"
    
    def test_get_user_list():
        response = requests.get(f"{BASE_URL}/users")
        assert response.status_code == 200  # 驗證狀態碼
        data = response.json()
        assert isinstance(data, list)  # 驗證返回數據為列表
        if data:  # 驗證列表不為空時的字段
            assert "id" in data[0]
            assert "name" in data[0]
    
  • 運行測試:在終端執行pytest test_api.py,查看測試結果(如通過/失敗用例數)。

4. 自動化測試:使用Postman Newman CLI

Postman是常用的API測試工具,其Newman CLI組件支持將Postman集合轉換為命令行腳本,適合集成到CI/CD流程。

  • 導出Swagger為Postman集合:通過Swagger Editor或Codegen將swagger.json導出為Postman Collection JSON文件(如swagger-collection.json)。
  • 安裝Newman:使用npm全局安裝Newman(Node.js環境)。
    npm install -g newman
    
  • 運行測試:執行Newman命令運行集合,生成文本或HTML報告(如report.html)。
    newman run swagger-collection.json -r cli,json,html
    
    報告會顯示每個接口的狀態碼、響應時間、錯誤信息等,便于團隊協作分析。

5. 自動化測試:使用Dredd(針對OpenAPI規范)

Dredd是一款專門針對OpenAPI規范的測試工具,可驗證接口實現是否符合文檔定義(如參數類型、響應格式)。

  • 安裝Dredd:使用npm全局安裝Dredd。
    npm install -g dredd
    
  • 運行測試:執行Dredd命令,指定接口定義文件(swagger.yaml)和接口地址(http://localhost:8080)。
    dredd swagger.yaml http://localhost:8080
    
    Dredd會自動比對文檔與實際接口的差異,輸出不符合規范的項目(如缺失的參數、錯誤的響應狀態碼),幫助維護接口文檔的一致性。

6. 輔助工具:Swagger Hacker(安全探測)

若需快速檢測Swagger接口的安全漏洞(如未授權訪問、敏感信息泄露),可使用swagger-hacker.py腳本。

  • 安裝腳本:克隆GitHub倉庫并進入目錄。
    git clone https://github.com/jayus0821/swagger-hack.git
    cd swagger-hack
    
  • 運行探測:執行腳本并指定Swagger接口地址(如https://example.com/swagger.json)。
    python swagger-hack.py -u https://example.com/swagger.json
    
    腳本會自動發送請求,輸出接口的可用性、參數信息及潛在的安全風險(如缺少認證的接口),幫助提前修復安全問題。

以上方法覆蓋了Linux環境下Swagger接口的手動測試、命令行測試、自動化測試及安全探測需求,可根據項目場景選擇合適的方式。例如,開發階段可使用Swagger UI快速調試,CI/CD流程可使用Newman或Dredd集成測試,安全檢查可使用Swagger Hacker掃描漏洞。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女