現(xiàn)在只要談到自動化測試,必然談到持續(xù)集成(CI)。目前最流行的持續(xù)集成工具就是Jenkins
,為了與Jenkins
結(jié)合,那么這些自動化測試工具都必須要支持命令行執(zhí)行方式,也就是說能夠通過命令行來運行自動化測試的用例。
為此,Newman就是 Postman 提供的命令行執(zhí)行工具,可以在命令行中執(zhí)行 Collection 運行過程,并生成測試報告。這樣就能把 Postman 編寫的接口測試用例與持續(xù)集成工具和系統(tǒng)構(gòu)建結(jié)合起來。
使用 Newman 執(zhí)行 Collection ,必須把 Collection 導出為 Json 文件。以我們之前一直用的 Postman echo 為例:
導出的文件名為Postman Echo.postman_collection.json
。
使用 Newman 執(zhí)行的效果為:
安裝 Newman
Newman 是基于 Node.js 開發(fā),因此必須要先安裝 Node.js 環(huán)境。
下載 Node.js 并安裝之后,可以在 CMD 中使用 npm 命令安裝 Newman:
npm install -g newman
等待安裝完成即可。
Newman 基本命令
上面我們已經(jīng)演示了最基本的命令,也就是直接指定一個 Collection 導出的 Json 文件運行:
newman run collection.json
Newman 完整命令
如果你只想通過 Newman 運行 Collection,或者在 Jenkins 中執(zhí)行接口用例。你可以參考如下這個完整的命令,仿寫就可以了:
newman run postman_collection.json
-e postman_environment.json
-d test_data.csv
-g postman_globals.json
-n 迭代次數(shù)
-r cli,html,json,junit
--reporter-json-export jsonOut.json
--reporter-junit-export xmlOut.xml
--reporter-html-export htmlOut.html
簡要說明:
- postman_collection.json:導出的 collection 文件名
- postman_environment.json:包含環(huán)境變量的環(huán)境文件
- test_data.csv:數(shù)據(jù)文件,也可以是 Json 格式。具體格式參考運行參考設置
- postman_globals.json:包含全局變量的文件
- 迭代次數(shù):重復執(zhí)行所有請求的次數(shù)
- cli,html,json,junit:指定導出報表格式,cli 指控制臺的標準輸出,html 為導出 html 報告,json 為 json 格式報告,Junit 導出 xml格式的報告;你需要導出哪些報表,就要先指定導出的格式
- jsonOut.json/xmlOut.xml/htmlOut.html:分別指定報告文件存放的路徑,如果不指定,會在命令所在的當前目錄下生成一個 Newman 目錄來存放。
如果你想更為深入的了解 Newman 所有參數(shù),你可以查看本文的后續(xù)內(nèi)容。
參數(shù)選項
除了上面的基本命令外,Newman 還提供了很多參數(shù)選項。
如果要查看所有參數(shù),可以使用 -h 參數(shù):
newman -h
可以看到 Newman 有如下選項:
Options:
公共設置選項:
-h, --help 展示參數(shù)信息
-v, --version 查看 Newman 版本
基本設置選項:
--folder [folderName] 指定要從集合運行的單個文件夾
-e, --environment [file|URL] 通過json文件指定環(huán)境(環(huán)境模塊導出的)
-d, --iteration-data [file] 指定要使用json或csv的數(shù)據(jù)文件
-g, --globals [file] 通過文件指定全局變量(全局變量設置模塊導出的)
-n, --iteration-count [number] 指定要迭代運行的次數(shù)
-r, --reporters [reporters] 指定用于此運行的報告類型(默認值:cli,也就是控制臺輸出)
請求設置選項:
--delay-request [number] 指定請求之間的延遲(毫秒)
--timeout [n] 指定 collection 運行的超時時間(毫秒)(默認值:0)
--timeout-request [number] 為請求指定請求超時(毫秒)
--timeout-script [n] 指定腳本運行超時時間(毫秒)(默認為:0)
其他雜項:
--bail 當有斷言失敗時停止所有運行
--silent 禁止在命令行界面輸出日志
--color 強制進行彩色輸出(在 CI 環(huán)境中使用)
--no-color 禁止命令行界面輸出日志中使用彩色
-k, --insecure 禁用 SSL
--ssl-client-cert <path> 指定客戶端 SSL 證書的路徑。支持 .cert 和 .pfx 文件。
--ssl-client-key <path> 指定客戶端 SSL 密鑰的路徑
--ssl-client-passphrase <path> 指定客戶端 SSL 密碼(可選,需要密碼保護密鑰)
-x, --suppress-exit-code 即使失敗也繼續(xù)運行測試,但退出時 code=0
--ignore-redirects 忽略重定向(響應狀態(tài)碼為3XX)
--export-environment <path> 完成運行后,將環(huán)境導出到文件中
--export-globals <path> 完成運行后,導出全局變量到文件中
--export-collection <path> 指定輸出文件保存執(zhí)行的 collection
--disable-unicode 強制將符合 unicode 的符號替換為等效的純文本
--global-var <value> 允許通過命令行以 key = value 格式指定全局變量
參數(shù)解釋
--folder [folderName] 運行單個文件夾
直接指定 Collection 的 Json 文件運行的時候默認是運行整個 Collection,可以通過 --folder
可以指定 Collection 中的某個文件夾來運行。
也就是部分運行了:
運行上圖中導出的 Collection,并指定運行Request Methods
文件夾:
命令如下:
newman run "Echo.postman_collection.json" --folder "Request Methods"
-e, --environment [file|URL] 指定環(huán)境文件
在 Postman 中運行時,可以通過界面指定運行的環(huán)境 Environment 。在 Newman 中就必須需要通過參數(shù)指定了。
之前講環(huán)境的時候已經(jīng)講過,Postman 中的環(huán)境可以導出為 Json 文件。在 Newman 運行時,可以使用 -e 參數(shù)指定導出的環(huán)境 Json 文件。
例如:導出的環(huán)境文件名為localhost.postman_environment.json
:
newman run "Postman Echo.postman_collection.json" -e localhost.postman_environment.json
-d, --iteration-data [file] 指定要使用json或csv的數(shù)據(jù)文件
運行參考設置一節(jié)中我們講過了 Postman 支持的數(shù)據(jù)文件類型(csv,json),并了解了文件的格式。
在 Newman 中運行時,通過 -d 參數(shù)指定這些數(shù)據(jù)文件。
newman run "Postman Echo.postman_collection.json" -d user.csv
-g, --globals [file] 指定全局變量文件
-g 參數(shù),通過文件指定當次運行 Collection 中所需要的全局變量。
全局變量文件可以從 Postman 中導出,也可以遵照全局變量的文件格式自己書寫,再通過 -g 參數(shù)指定。
newman run "Postman Echo.postman_collection.json" -g globals.json
-n, --iteration-count [number] 指定要迭代運行的次數(shù)
通過 -n 次數(shù),可以指定當次運行 Collection 的次數(shù)。對迭代不熟悉的同學,也可以參考運行參考設置中關于迭代的解釋部分。
-r, --reporters [reporters] 指定用于此運行的報告類型
通過 -r 指定報告的類型,不指定的話默認就是 cli
, 也就是控制臺輸出。
注意,指定多種報告類型的時候中間不能有空格,必須以逗號分隔:
? -r cli,json,junit
? -r cli , json,junit
如果指定了多個報告,并想為每個報告指定選項的話(比如指定某些報告的保存路徑),則需要通過如下方式額外指定:
--reporter-{{reporter-name}}-{{reporter-option}}
{{reporter-name}}:指定報告名稱,如 cli,json,junit,html 等
{{reporter-option}}:選項,如指定路徑 export
比如 指定報告類型為 cli 和 Junit,而 Junit 導出的文件我想指定保存到 d:\data\report
,就可以寫為:
-r cli,junit --report-junit-export d:\data\report\junit_report.xml