使用 Postman 實現 API 自動化測試

程式設計玩家發表於2022-05-23

背景介紹

相信大部分開發人員和測試人員對 postman 都十分熟悉,對於開發人員和測試人員而言,使用 postman 來編寫和儲存測試用例會是一種比較方便和熟悉的方式。但 postman 本身是一個圖形化軟體,相對較難或較麻煩(如使用 RPA)實現自動化測試。幸運的是,postman 還提供了一個命令列工具 newman,我們可以藉助 postman + newman 來實現 API 自動化測試。

 

名詞解析

1. Collection

Collection 是一組儲存的請求,postman 中傳送的每個請求都會顯示在側欄的 ”歷史記錄“ 選項卡下。請求數量比較少的時候,通過歷史記錄來重用請求會比較方便。隨著請求量的增長,在歷史記錄中查詢特定請求可能會非常耗時。此時,你可以將所有請求儲存為一個 collection,以便於訪問。

 

2. Environment

Environment 是一組可以在 postman 請求中使用的變數。你可以根據不同的環境(如 dev、test、prod 等),把一組相關的變數放到不同的 environment 檔案中,來對不同的環境進行 API 自動化測試。

 

使用說明

的 https://www.baidu.com/sugrec  API 

 

1. 建立 Collection

新建 collection:

 

新建請求:

 

測試請求,狀態碼返回 200:

 

編寫測試斷言並驗證斷言:

pm.test("Return 200", function() {
    pm.response.to.have.status(200)
})

 

2. 建立 Environment

新建 environment:

 

填寫引數資訊,這裡簡單使用 host 作為引數:

 

在 collection 的請求中使用 host 引數,並進行測試:

 

3. 匯出 CollectionEnvironment

匯出 collection 為 collection.json:

 

匯出 environment 為 environment.json:

 

 

3. 執行 API 測試

我們只需要基於匯出的 collection.json 和 environment.json 執行一條 docker 指令即可完成 API 測試:

docker run --rm -i -v /root/postman:/etc/newman \
    --entrypoint sh postman/newman:alpine -c \
    'npm i -g newman-reporter-html; \
    newman run collection.json \
    --suppress-exit-code 1 \
    --color off \
    --reporters cli,html\
    --reporter-html-export api_report.html \
    --environment=environment.json'

指令解析:

專案 說明
docker run 啟動 docker 容器
--rm  退出容器時銷燬容器
-i 互動模式
-v /root/postman:/etc/newman 目錄掛載
--entrypoint sh postman/newman:alpine -c 容器執行指令
npm i -g newman-reporter-html 安裝 html 報告外掛
newman run collection.json 指定測試 collection.json
--suppress-exit-code 1  指定錯誤狀態碼為 1
--color off  關閉顏色
--reporters cli,html 輸出命令列和 html 報告
--reporter-html-export api_report.html 設定輸出 html 檔名
--environment=environment.json 指定 environment.json 檔案

 

執行結果:

 

檢視 html 報告:

 

4. 整合 CI 實現 API 自動化測試

你只需要針對你的程式碼專案準備好 collection.json 和 environment.json,把它們存放到程式碼中的某個目錄,然後在 jenkins 或 gitlab-ci 中新增執行上面介紹的 docker 指令即可。

 

參考總結

以上就是本文希望分享的內容,如果大家有什麼問題,歡迎在文章或者公眾號 - 跬步之巔留言交流。

相關文章