你應該學會的介面除錯神器 Postman高階用法

2022-01-29 07:25:13 字數 3326 閱讀 5901

postman這個神器相信大家都用過,程式設計師作為非專業的測試人員,非常需要這麼一款簡單輕量級的restful測試工具,但是不知道你是否知道,postman的強大之處不只是測試一下介面,還有其他非常贊的使用方式。

入門級功能,但是被很多人忽略。postman左側有個collections的tab,可以將介面進行分組,而且可以將分組以後的介面進行批量的執行,是乙個非常贊的功能。當然,點選runner也是可以的。

可以設定環境重複次數、每個介面延遲等,並且會顯示批量執行的結果。

這個是非常基礎的功能,有了這個基礎以後,批量的測試以及自動化的測試都可以實現。

介面認證是所有介面必須做的事情,postman已經幫我們幫一些常用的介面認證機制視覺化了,使用起來非常簡單。

加入需要用的基礎的auth認證,不管是auth1.0,還是auth2.0都能很好的支援。

當然,有的時候認證方式完全是自定義的,在authorization功能找不到認證的方式,例如很多的身份認證是需要通過時間戳、密碼或者其他引數根據一定的演算法規則,算出乙個結果,那麼是不是我們就沒有辦法使用了?當然不是,那就需要重點介紹的功能——postman指令碼,但這之前,我們先介紹一下還有乙個非常重要的概念:環境變數

對於乙個程式設計師來說,環境變數這個概念還是很好理解,這裡的環境變數就是大家理解的那樣了,設定了環境變數以後,所有的介面都可以使用這個變數,而且這個變數是可以通過**進行修改的。

設定環境變數:

postman.setenvironmentvariable("sign", mdmauth.tostring());
使用如上環境變數,只要在引數中用},如圖:

postman介面有個名叫pre-request script 的tab,從這裡開始就介紹一下postman最重要的功能之一,指令碼功能。pre-request script就是在請求之前執行的指令碼。

執行前指令碼我一般的用法就是用來修改環境變數,因為執行前做的事情,主要就是對請求的引數做一些處理。這裡舉個簡單的例子:

某介面的介面認證規則,主要是通過header中的authentication來進行身份的認證,authentication的值是根據秘鑰(key),時間戳(timestamp),傳入的引數(param),以及key、timestamp和param組成生成字串md5以後生成的sign,最終的結果類似於:

其實這是乙個很常用場景,很多介面都是當前的引數和時間戳聯合進行處理,來確保介面引數時效性,這樣的場景直接通過引數或者環境變數肯定是有問題的,因為時間是動態的,只能動過程式來處理。我來處理方式大概就是:

指令碼如下:

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="";

console.log(mdmauth);

//設定環境變數

postman.setenvironmentvariable("mdmauth", mdmauth.tostring());

使用過程中我們也需要獲取請求的值,或者請求的結果,post有幾個內建的變數可以直接獲取:

除此之外,還有幾個內建的全域性動態環境變數:

說真的,postman考慮的是在是太周到了,有了以上的神器,不只是可以自動化的編寫指令碼,而且還能非常方便的編寫指令碼,測試任何型別的介面。

具體內容,建議詳細閱讀: ,這個頁面的內容非常重要。

var jsondata = json.parse(responsebody);

//tests的內容會在測試的時候展示

tests["返回值正常"] = jsondata.result===true;

postman.setenvironmentvariable("authtoken",cryptojs.md5(request.headers["username"]+jsondata.data.franchiseecode));

//執行成功後呼叫下乙個介面

postman.setnextrequest("獲取待處理");

其中,有個函式postman.setnextrequest 會呼叫下乙個介面,這兩就可以讓介面執行的有順序,這就是我們需要的流程測試。

我們在postman中的console.log或者斷點都是可以進行除錯的,和chrome除錯web一樣的。

以上只是介紹了部分關於postman使用中,稍微高階一點的功能,其實postman還有很多好的功能,如文件匯出、純指令碼測試,這些功能如果大家有用到,建議仔細閱讀官網的doc,postman絕對不是簡單的乙個測試介面的工具,是乙個完全覆蓋開發人員測試場景的介面除錯工具。

(完)

Postman介面除錯神器

get請求 點選params,輸入引數及value,可輸入多個,即時顯示在url鏈結上,所以,get請求的請求頭與請求引數如在介面文件中無特別宣告時,可以不填。有乙個要明確的點是,請求頭中的content type與請求引數的格式之間是有關聯關係的。當選擇x www form urlencoded的...

Postman介面除錯神器 Chrome瀏覽器外掛程式

此時不能直接拖拽到谷歌瀏覽器的擴充套件程式介面,如果你直接把.crx檔案拖拽到擴充套件程式的介面會有如下錯誤提示,說只能通過谷歌瀏覽器的 網上應用商店新增該程式,為什麼會出現該情況呢?是因為自 chrome 21.x 開始預設只允許從 chrome web store chrome 網上應用店 安裝...

你應該學會的三項能力

記得我之前跟你強調在大學期間要學好三項本領 一是英語,再是程式設計和寫作。如果說未來的人才只能具備三個能力的話,那麼我會選擇這三項作為立身之本。再來說說程式設計,為什麼要懂程式設計?預計到2030年,中國會進入人人都會程式設計的時代,看看這幾年我們生活的改變,5 年前的生活跟現在絕對是天壤之別,無處...