你應該學會的接口調試神器——Postman高級用法

postman這個神器相信你們都用過,程序員做爲非專業的測試人員,很是須要這麼一款簡單輕量級的restful測試工具,可是不知道你是否知道,postman的強大之處不僅是測試一下接口,還有其餘很是讚的使用方式。javascript

批量執行接口

入門級功能,可是被不少人忽略。postman左側有個collections的tab,能夠將接口進行分組,並且能夠將分組之後的接口進行批量的執行,是一個很是讚的功能。固然,點擊Runner也是能夠的。css

  • 批量執行入口
  • 批量執行界面

能夠設置環境、重複次數、每一個接口延遲等,而且會顯示批量執行的結果。java

這個是很是基礎的功能,有了這個基礎之後,批量的測試以及自動化的測試均可以實現。jquery

認證authorization

接口認證是全部接口必須作的事情,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"}

其實這是一個很經常使用場景,不少接口都是當前的參數和時間戳聯合進行處理,來確保接口參數時效性,這樣的場景直接經過參數或者環境變量確定是有問題的,由於時間是動態的,只能動過程序來處理。我來處理方式大概就是:

  • 腳本計算出須要的值,將值設爲環境變量
  • 參數設置的value爲當前的環境變量
  • 執行測試

腳本以下:

  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庫,基本能知足全部的使用場景,咱們經常使用內置的函數包括:

  • Lodash,一個基礎的函數庫,你們應該都用過
  • cheerio,能夠理解爲另外一個jquery
  • BackboneJS,js的mvc框架
  • CryptoJS,js加密庫,支持幾乎全部的經常使用加密方式

使用過程當中咱們也須要獲取請求的值,或者請求的結果,post有幾個內置的變量能夠直接獲取:

  • request 獲取請求的參數,包括頭和請求體
  • responseHeaders 返回值的header
  • responseBody 返回值的body
  • responseCode 返回值的http code

除此以外,還有幾個內置的全局動態環境變量:

  • {{$guid}}: 生成一個guid
  • {{$timestamp}}: 獲取當前時間戳
  • {{$randomInt}}: 獲取一個動態整數

說真的,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絕對不是簡單的一個測試接口的工具,是一個徹底覆蓋開發人員測試場景的接口調試工具。

以上內容但願對你有幫助,有被幫助到的朋友歡迎點贊,評論。

相關文章
相關標籤/搜索