postman這個神器相信你們都用過,程序員做爲非專業的測試人員,很是須要這麼一款簡單輕量級的restful測試工具,可是不知道你是否知道,postman的強大之處不僅是測試一下接口,還有其餘很是讚的使用方式。javascript
入門級功能,可是被不少人忽略。postman左側有個collections的tab,能夠將接口進行分組,並且能夠將分組之後的接口進行批量的執行,是一個很是讚的功能。固然,點擊Runner也是能夠的。css
能夠設置環境、重複次數、每一個接口延遲等,而且會顯示批量執行的結果。java
這個是很是基礎的功能,有了這個基礎之後,批量的測試以及自動化的測試均可以實現。jquery
接口認證是全部接口必須作的事情,postman已經幫咱們幫一些經常使用的接口認證機制可視化了,使用起來很是簡單。
加入須要用的基礎的auth認證,不論是auth1.0,仍是auth2.0都能很好的支持。程序員
固然,有的時候認證方式徹底是自定義的,在authorization功能找不到認證的方式,例如不少的身份認證是須要經過時間戳、密碼或者其餘參數根據必定的算法規則,算出一個結果,那麼是否是咱們就沒有辦法使用了?固然不是,那就須要重點介紹的功能——postman腳本,但這以前,咱們先介紹一下還有一個很是重要的概念:環境變量web
對於一個程序員來講,環境變量這個概念仍是很好理解,這裏的環境變量就是你們理解的那樣了,設置了環境變量之後,全部的接口均可以使用這個變量,並且這個變量是能夠經過代碼進行修改的。
設置環境變量:面試
postman.setEnvironmentVariable("sign", mdmauth.toString());
使用如上環境變量,只要在參數中用{{sign}},如圖:算法
postman界面有個名叫pre-request script 的tab,從這裏開始就介紹一下postman最重要的功能之一,腳本功能。pre-request script就是在請求以前執行的腳本。chrome
執行前腳本我通常的用法就是用來修改環境變量,由於執行前作的事情,主要就是對請求的參數作一些處理。這裏舉個簡單的例子:
某接口的接口認證規則,主要是經過header中的authentication來進行身份的認證,authentication的值是根據祕鑰(key),時間戳(timeStamp),傳入的參數(param),以及key、timeStamp和param組成生成字符串md5之後生成的sign,最終的結果相似於:編程
{"timeStamp": "2017-11-13 10:06:08",sign": "99f8d869d6a105afddd9d152c5894418"}
其實這是一個很經常使用場景,不少接口都是當前的參數和時間戳聯合進行處理,來確保接口參數時效性,這樣的場景直接經過參數或者環境變量確定是有問題的,由於時間是動態的,只能動過程序來處理。我來處理方式大概就是:
腳本以下:
var date=new Date(); var y = date.getFullYear(); var m = date.getMonth() + 1; m = m < 10 ? ('0' + m) : m; var d = date.getDate(); d = d < 10 ? ('0' + d) : d; var h = date.getHours(); h=h < 10 ? ('0' + h) : h; var minute = date.getMinutes(); minute = minute < 10 ? ('0' + minute) : minute; var second=date.getSeconds(); second=second < 10 ? ('0' + second) : second; //獲取時間,格式爲yyyy-mm-dd HH:mm:ss var timespan=y + '-' + m + '-' + d+' '+h+':'+minute+':'+second; var key='dfc96ds8-e5a0-45aa-a2ec-2611cds71d4e'; //經過request.data獲取body的內容,這個是postman內置變量 var param=request.data; console.log(key); console.log(timespan); console.log(param); //CryptoJS,postman的內置js庫 var sign=CryptoJS.MD5(key+timespan+param).toString(); console.log(sign); var mdmauth="{\"timeStamp\": \""+timespan+"\",\"sysCode\": \"EUH\",\"sign\": \""+sign+"\"}"; console.log(mdmauth); //設置環境變量 postman.setEnvironmentVariable("mdmauth", mdmauth.toString());
postman的腳本是你們很是熟悉的javascript腳本,並且postman還內置了一些重用的js庫,基本能知足全部的使用場景,咱們經常使用內置的函數包括:
使用過程當中咱們也須要獲取請求的值,或者請求的結果,post有幾個內置的變量能夠直接獲取:
除此以外,還有幾個內置的全局動態環境變量:
說真的,postman考慮的是在是太周到了,有了以上的神器,不僅是能夠自動化的編寫腳本,並且還能很是方便的編寫腳本,測試任何類型的接口。
前文介紹了批量執行接口,執行前腳本能相關內容,只要能支持編程,接口的測試就變得很靈活,容易定製。其實,正常的測試還有一個場景,接口的測試都是有依賴的,如接口的測試都依賴於token接口來獲取腳本,或者批量測試的時候,後面的接口須要前面接口的返回值等,postman確定也是支持的,批量執行接口結合測試腳本,使用就很是簡單了。
測試的代碼在Test這個tab中,這裏的結果是測試完成後執行的內容。pre-request script是執行前,test是執行後,這樣就能構成一個閉環了。
示例代碼:
var jsonData = JSON.parse(responseBody); //tests的內容會在測試的時候展現 tests["http code"] = responseCode.code === 200; tests["返回值正常"] = jsonData.Result===true; postman.setEnvironmentVariable("authtoken",CryptoJS.MD5(request.headers["UserName"]+jsonData.Data.FranchiseeCode)); //執行成功後調用下一個接口 postman.setNextRequest("獲取待處理");
其中,有個函數postman.setNextRequest 會調用下一個接口,這兩就可讓接口執行的有順序,這就是咱們須要的流程測試。
若是對軟件測試、接口測試、自動化測試、面試經驗交流。感興趣能夠加軟件測試交流:1085991341,還會有同行一塊兒技術交流。
既然涉及到編程,那麼確定也會涉及到調試,postman對調試的支持也是很是好的,只須要簡單的設置,結合chrome就能進行調試。
首先,開啓下chrome的調試。在chrome地址欄中輸入:chrome://flags/#debug-packed-apps ,開啓Debugging for packed app。(設置欄目較多,建議搜索找到)
接着,輸入chrome://inspect/#apps,選擇postman的inspect,就彈出咱們熟悉的postman的調試框
咱們在postman中的console.log或者斷點都是能夠進行調試的,和chrome調試web同樣的。
以上只是介紹了部分關於postman使用中,稍微高級一點的功能,其實postman還有不少好的功能,如文檔導出、純腳本測試,這些功能若是你們有用到,建議仔細閱讀官網的doc,postman絕對不是簡單的一個測試接口的工具,是一個徹底覆蓋開發人員測試場景的接口調試工具。
以上內容但願對你有幫助,有被幫助到的朋友歡迎點贊,評論。