『政善治』Postman工具 — 14、NewMan工具的使用詳解

繁華似錦Fighting發表於2021-05-27

前面向大家介紹了Postman的用法,我們發現這些操作都離不開Postman 的客戶端,我們知道伺服器一般都是Linux系統,那麼如何在Linux系統下執行我們的Postman測試集指令碼(json檔案)呢,谷歌公司為了解決這個問題,引入了 NewMan工具。

1、NewMan工具的介紹

Newman是Postman的命令列,是一種Collection測試集執行程式。NewMan基於Node.js開發,它使您可以直接從命令列輕鬆執行和測試Postman測試集。它在構建時考慮了可擴充套件性,因此您可以輕鬆地將其與持續整合伺服器整合並構建系統。

簡單的說:

  • Postman使用NewMan命令列工具,完成Collection測試集指令碼的執行。
  • NewMan是專門用於Postman進行自動化測試和持續整合的CLI工具(command-line interface,命令列介面)。

官方文件地址:https://www.npmjs.com/package/newman

2、NewMan的安裝

(1)安裝

首先需要安裝Node.js,請看https://blog.csdn.net/Liuyuelinjiayou/article/details/110499056文章中關於Node.js的下載安裝。

完成Node.js安裝之後,在命令列中輸入npm install -g newman 自動完成NewMan的安裝。

提示:

如果NewMan下載不了,如卡在下面不動

C:\Users\L>npm install newman -g
[..................] / rollbackFailedOptional: verb npm-session 8cb76e6aae9ea432 

或者出現下載失敗,如下圖:

image

我們可以更換npm命令使用國內映象庫,例如:淘寶。

# 1.獲取npm命令當前使用的映象庫
C:\Users\L>npm config get registry
https://registry.npmjs.org/

# 2.設定成淘寶映象庫,並檢視(修改的是.npmrc檔案中的內容)
C:\Users\L>npm config set registry http://registry.npm.taobao.org/

C:\Users\L>npm config get registry
http://registry.npm.taobao.org/

# 3.下載NewMan工具
C:\Users\L>npm install newman -g
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
F:\DevInstall\nodejs\node_global\newman -> F:\DevInstall\nodejs\node_global\node_modules\newman\bin\newman.js
+ newman@5.2.2
added 157 packages from 200 contributors in 17.027s
# 特別要記住上面newman的安裝路徑
# F:\DevInstall\nodejs\node_global\newman

# 4.還原npm命令的映象庫
C:\Users\L>npm config set registry https://registry.npmjs.org/

C:\Users\L>npm config get registry
https://registry.npmjs.org/

(2)驗證NewMan環境:

在CMD命令列中執行newman -v

但是出現如下情況。

C:\Users\L>newman -v
'newman' 不是內部或外部命令,也不是可執行的程式
或批處理檔案。

# 也找不到newman工具的位置
C:\Users\L>where newman
資訊: 用提供的模式無法找到檔案。

解決辦法:進入到NewMan的安裝目錄(上邊安裝NewMan的時候有顯示)

# 進入到NewMan的安裝目錄
# F:\DevInstall\nodejs\node_global
F:\DevInstall\nodejs\npm newman -v

# 執行newman -v命令檢視newman的安裝版本
F:\DevInstall\nodejs\node_global>newman -v
5.2.2

也可以把F:\DevInstall\nodejs\node_global配置到環境變數中。

image

這樣在任何目錄下都可以直接執行NewMan命令了。

(3)NewMan解除安裝命令

npm uninstall -g newman

3、NewMan執行Postman測試集

以前面文章的綜合練習為例。

(1)匯出collections

在collection測試集選項選單中選擇Export,匯出為.json格式的檔案。

image

然後選擇預設推薦的Collection v2.1b版本即可。

image

點選Export,匯出綜合練習.postman_collection.json檔案。(可以自行重新命名)

(2)使用NewMan執行Collection

使用NewMan執行Collection測試集匯出的.json檔案。

通過NewMan命令列執行測試集,命令列中輸入newman run 匯出的json檔名即可。

執行過程如下圖:

image

說明:

  • 第一部分:測試集名稱和執行請求的列表,綠色對勾表示斷言通過,紅色檔案表示斷言失敗。
  • 第二部分:測試集執行結果總結。
    iterations:迭代次數。
    requests:請求個數。
    test-scripts:請求後置指令碼個數。
    prerequest-scripts:請求前置指令碼個數。
    assertions:斷言個數。
    total run duration:總執行時間。
    total data received:接收到的總資料大小。
    average response time:平均響應時間。
  • 第三部分:失敗斷言的列表,以及斷言失敗的詳情。

4、NewMan命令常用選項

Postman中NewMan命令列執行文件:https://learning.postman.com/docs/running-collections/using-newman-cli/command-line-integration-with-newman/

(1)幫助選項

選項 細節
-h--help 輸出使用情況資訊
-v--version 輸出版本號

(2)常用選項

  • -e, --environment:指定environment環境變數,使用前環境變數需要以.json的格式進行匯出。(全路徑)
  • -g, --globals:指定 global 環境變數,使用前全域性變數需要以.json的格式進行匯出。(全路徑)
  • -d, --iteration-data:指定執行Collection測試集時使用的資料驅動檔案(全路徑)
  • -n, --iteration-count:指定Collection run時,測試集迴圈迭代次數iterations。
  • -r, --reporters [reporters]:測試集執行完成後的結果報告型別,除預設命令列格式CLI外,還支援jsonhtml格式型別的報告(常用的三種格式)。
  • --folder [folderName]:指定要從集合執行的單個資料夾。

(3)其他選項

選項 細節
--bail 測試用例失敗時停止執行器
--silent 禁用終端輸出
--color off 禁用彩色輸出(自動)
-k--insecure 禁用嚴格的SSL
-x--suppress-exit-code 即使發生故障後仍繼續執行測試,但退出 code=0
--ignore-redirects 禁用自動關注3XX響應
--verbose 顯示收集執行和傳送的每個請求的詳細資訊

5、加入環境變數

一般Collection測試集都會有自己的環境變數,使用newman run + 測試集.json檔案命令,執行測試集是不帶有該測試集的環境變數的。

這些環境變數需要單獨的匯出,並使用NewMan執行。

步驟1:匯出“綜合練習”的環境變數

在環境變數編輯皮膚中,匯出“綜合練習”的環境變數。

image

步驟2:在命令列中執行NewMan命令

命令如下:

newman run C:\Users\L\Desktop\綜合練習.postman_collection.json -e C:\Users\L\Desktop\綜合練習.postman_environment.json

檢視執行結果:

image

其他選項,使用方式同理。

6、加入資料驅動

還是以前面文章的綜合練習為例。

步驟1:把綜合練習DDT的Collection測試匯出

image

步驟2:匯出“綜合練習”的環境變數

image

步驟3:在命令列中執行NewMan命令

因為資料驅動檔案本身就再計算機中,我們就可以直接執行NewMan命令了。

命令如下:

newman run C:\Users\L\Desktop\綜合練習DDT.postman_collection.json  -e C:\Users\L\Desktop\綜合練習.postman_environment.json -d C:\Users\L\Desktop\綜合練習資料.csv

檢視執行結果:

image

7、Newman測試報告

Newman提供的測試報告中,常用的包括CLIjsonhtml三種格式。

可以通過-r或者--reporter命令指定所用的報告格式。

  • CLI格式報告:為在CMD客戶端呈現的報告模板,Newman預設使用該格式。
  • json格式報告:可以匯出json格式的報告,通過-r json進行設定,並加上--reporter-json-export引數指定報告生成的路徑。
    例如:測試集執行命令 -r json --reporter-json-export D:\result.json
  • html格式報告:可以匯出html格式的報告,通過-r html進行設定,並加上--reporter-html-export引數指定報告生成的路徑。
    在使用之前需要通過npm install -g newman-reporter-html先完成安裝。
    例如:測試集執行命令 -r html --reporter-html-export D:\result.html

(1)生成CLI和json格式的測試報告

沿用上面的示例,執行命令如下:

newman run C:\Users\L\Desktop\綜合練習DDT.postman_collection.json  -e C:\Users\L\Desktop\綜合練習.postman_environment.json -d C:\Users\L\Desktop\綜合練習資料.csv -r cli,json --reporter-json-export F:\testTesult.json

會提示:error: EPERM: operation not permitted, mkdir 'D:\'

解決方式有如下幾種(自己試試):

  1. 使用管理員CMD視窗執行命令。
  2. 通過清理NPM快取。
    npm cache clean -f
    npm cache clean --force
    
  3. 移除C:\Users\使用者\.npmrc檔案
  4. Windows10系統原因。(我並沒有解決這個問題)

命令執行完成後,我們會得到一個.json格式的測試報告檔案。我們不用這種格式的測試報告檢視測試結果(可能會把該檔案提供給其他測試報告生成工具,最終得到比較好看的測試報告)。

(2)生成HTML格式的測試報告

我們需要先安裝newman-reporter-html工具,

執行命令:npm install -g newman-reporter-html,(下載不了換npm映象庫)。

然後執行測試命令:

newman run C:\Users\L\Desktop\綜合練習DDT.postman_collection.json  -e C:\Users\L\Desktop\綜合練習.postman_environment.json -d C:\Users\L\Desktop\綜合練習資料.csv -r cli,html --reporter-html-export D:\result.html

命令執行完成後,會生成一個HTML檔案,內容如下:

image

8、補充

如果在實際工作中需要定時的執行測試,我們就再對應的系統中設定定時任務,來執行上面的命令。

例如在windows系統中,把命令寫入.bat檔案中,在定時任務中,到時間執行該.bat檔案即可。

在與Jenkins整合時,Jenkins定時執行Newman執行測試集,設定好時間。

在構建時,新增構建步驟選擇執行windows批處理命令,將newman命令寫入即可。

image

這裡指說明一下與Jenkins整合的思路,以後會詳細的寫一篇文章說明的。

相關文章