日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

你应该学会的接口调试神器——Postman高级用法

發(fā)布時間:2025/3/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 你应该学会的接口调试神器——Postman高级用法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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

批量執(zhí)行接口

入門級功能,但是被很多人忽略。postman左側(cè)有個collections的tab,可以將接口進行分組,而且可以將分組以后的接口進行批量的執(zhí)行,是一個非常贊的功能。當然,點擊Runner也是可以的。

  • 批量執(zhí)行入口
image
  • 批量執(zhí)行界面
image

可以設(shè)置環(huán)境重復次數(shù)、每個接口延遲等,并且會顯示批量執(zhí)行的結(jié)果。

這個是非常基礎(chǔ)的功能,有了這個基礎(chǔ)以后,批量的測試以及自動化的測試都可以實現(xiàn)。

認證authorization

接口認證是所有接口必須做的事情,postman已經(jīng)幫我們幫一些常用的接口認證機制可視化了,使用起來非常簡單。
加入需要用的基礎(chǔ)的auth認證,不管是auth1.0,還是auth2.0都能很好的支持。

image image

當然,有的時候認證方式完全是自定義的,在authorization功能找不到認證的方式,例如很多的身份認證是需要通過時間戳、密碼或者其他參數(shù)根據(jù)一定的算法規(guī)則,算出一個結(jié)果,那么是不是我們就沒有辦法使用了?當然不是,那就需要重點介紹的功能——postman腳本,但這之前,我們先介紹一下還有一個非常重要的概念:環(huán)境變量

環(huán)境變量

對于一個程序員來說,環(huán)境變量這個概念還是很好理解,這里的環(huán)境變量就是大家理解的那樣了,設(shè)置了環(huán)境變量以后,所有的接口都可以使用這個變量,而且這個變量是可以通過代碼進行修改的。
設(shè)置環(huán)境變量:

postman.setEnvironmentVariable("sign", mdmauth.toString());

使用如上環(huán)境變量,只要在參數(shù)中用{{sign}},如圖:

image

執(zhí)行前腳本

postman界面有個名叫pre-request script 的tab,從這里開始就介紹一下postman最重要的功能之一,腳本功能。pre-request script就是在請求之前執(zhí)行的腳本。

image
執(zhí)行前腳本我一般的用法就是用來修改環(huán)境變量,因為執(zhí)行前做的事情,主要就是對請求的參數(shù)做一些處理。這里舉個簡單的例子:
某接口的接口認證規(guī)則,主要是通過header中的authentication來進行身份的認證,authentication的值是根據(jù)秘鑰(key),時間戳(timeStamp),傳入的參數(shù)(param),以及key、timeStamp和param組成生成字符串md5以后生成的sign,最終的結(jié)果類似于:

{"timeStamp": "2017-11-13 10:06:08",sign": "99f8d869d6a105afddd9d152c5894418"}

其實這是一個很常用場景,很多接口都是當前的參數(shù)和時間戳聯(lián)合進行處理,來確保接口參數(shù)時效性,這樣的場景直接通過參數(shù)或者環(huán)境變量肯定是有問題的,因為時間是動態(tài)的,只能動過程序來處理。我來處理方式大概就是:

  • 腳本計算出需要的值,將值設(shè)為環(huán)境變量
  • 參數(shù)設(shè)置的value為當前的環(huán)境變量
  • 執(zhí)行測試

腳本如下:

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的內(nèi)容,這個是postman內(nèi)置變量 var param=request.data;console.log(key);console.log(timespan);console.log(param); //CryptoJS,postman的內(nèi)置js庫 var sign=CryptoJS.MD5(key+timespan+param).toString();console.log(sign); var mdmauth="{\"timeStamp\": \""+timespan+"\",\"sysCode\": \"EUH\",\"sign\": \""+sign+"\"}"; console.log(mdmauth); //設(shè)置環(huán)境變量 postman.setEnvironmentVariable("mdmauth", mdmauth.toString());

postman的腳本是大家非常熟悉的javascript腳本,而且postman還內(nèi)置了一些重用的js庫,基本能滿足所有的使用場景,我們常用內(nèi)置的函數(shù)包括:

  • Lodash,一個基礎(chǔ)的函數(shù)庫,大家應該都用過
  • cheerio,可以理解為另一個jquery
  • BackboneJS,js的mvc框架
  • CryptoJS,js加密庫,支持幾乎所有的常用加密方式

使用過程中我們也需要獲取請求的值,或者請求的結(jié)果,post有幾個內(nèi)置的變量可以直接獲取:

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

除此之外,還有幾個內(nèi)置的全局動態(tài)環(huán)境變量:

  • {{$guid}}: 生成一個guid
  • {{$timestamp}}: 獲取當前時間戳
  • {{$randomInt}}: 獲取一個動態(tài)整數(shù)

說真的,postman考慮的是在是太周到了,有了以上的神器,不只是可以自動化的編寫腳本,而且還能非常方便的編寫腳本,測試任何類型的接口。
具體內(nèi)容,建議詳細閱讀:https://www.getpostman.com/docs/postman/scripts/postman_sandbox ,這個頁面的內(nèi)容非常重要。

測試腳本

前文介紹了批量執(zhí)行接口,執(zhí)行前腳本能相關(guān)內(nèi)容,只要能支持編程,接口的測試就變得很靈活,容易定制。其實,正常的測試還有一個場景,接口的測試都是有依賴的,如接口的測試都依賴于token接口來獲取腳本,或者批量測試的時候,后面的接口需要前面接口的返回值等,postman肯定也是支持的,批量執(zhí)行接口結(jié)合測試腳本,使用就非常簡單了。
測試的代碼在Test這個tab中,這里的結(jié)果是測試完成后執(zhí)行的內(nèi)容。pre-request script是執(zhí)行前,test是執(zhí)行后,這樣就能構(gòu)成一個閉環(huán)了。(完美!!!)

image
示例代碼:

var jsonData = JSON.parse(responseBody);//tests的內(nèi)容會在測試的時候展示 tests["http code"] = responseCode.code === 200; tests["返回值正常"] = jsonData.Result===true;postman.setEnvironmentVariable("authtoken",CryptoJS.MD5(request.headers["UserName"]+jsonData.Data.FranchiseeCode));//執(zhí)行成功后調(diào)用下一個接口 postman.setNextRequest("獲取待處理");

其中,有個函數(shù)postman.setNextRequest 會調(diào)用下一個接口,這兩就可以讓接口執(zhí)行的有順序,這就是我們需要的流程測試。

調(diào)試

既然涉及到編程,那么肯定也會涉及到調(diào)試,postman對調(diào)試的支持也是非常好的,只需要簡單的設(shè)置,結(jié)合chrome就能進行調(diào)試。
首先,開啟下chrome的調(diào)試。在chrome地址欄中輸入:chrome://flags/#debug-packed-apps ,開啟Debugging for packed app。(設(shè)置欄目較多,建議搜索找到)

image

接著,輸入chrome://inspect/#apps,選擇postman的inspect,就彈出我們熟悉的postman的調(diào)試框

image

我們在postman中的console.log或者斷點都是可以進行調(diào)試的,和chrome調(diào)試web一樣的。

總結(jié)

以上只是介紹了部分關(guān)于postman使用中,稍微高級一點的功能,其實postman還有很多好的功能,如文檔導出、純腳本測試,這些功能如果大家有用到,建議仔細閱讀官網(wǎng)的doc,postman絕對不是簡單的一個測試接口的工具,是一個完全覆蓋開發(fā)人員測試場景的接口調(diào)試工具。

(完)


歡迎大家關(guān)注我的公眾號交流、學習、第一時間獲取最新的文章。
微信號:itmifen

image

總結(jié)

以上是生活随笔為你收集整理的你应该学会的接口调试神器——Postman高级用法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。