postman-變量/環(huán)境/過(guò)濾等

[TOC]

之前雖然自己也有用postman來(lái)測(cè)試api,但都只是最簡(jiǎn)單輸入url,發(fā)送,查看結(jié)果,大部分時(shí)候跟使用瀏覽器差不多,偶然在簡(jiǎn)書(shū)首頁(yè)看到一篇 API開(kāi)發(fā)神器-Postman , 深感還是得對(duì)自己使用的工具多琢磨一下,興許你就發(fā)現(xiàn)了寶貝,大大加快開(kāi)發(fā)測(cè)試速度了;

這里沒(méi)有打算寫(xiě)全面的教程,只對(duì)我之前沒(méi)了解的環(huán)境設(shè)置/變量使用以及對(duì)返回結(jié)果進(jìn)行過(guò)濾等操作進(jìn)行記錄,詳細(xì)的文檔請(qǐng)看 官網(wǎng)說(shuō)明 ,另外,我的版本是 4.3.2;

環(huán)境(Environmen)

在開(kāi)發(fā)不同階段,可能存在不同的環(huán)境(對(duì)我碰到的就是服務(wù)器地址/api版本/header信息等不一樣),比如 debug環(huán)境和release環(huán)境,每次切換環(huán)境測(cè)試的時(shí)候都得重新配置url信息,非常麻煩耗時(shí),還容易出錯(cuò);

如果能把這些配置信息抽象成類(lèi),不同環(huán)境對(duì)應(yīng)不同的實(shí)例,初始化設(shè)定后,在request請(qǐng)求中通過(guò)類(lèi)/實(shí)例成員變量來(lái)引用不同的值,從而在需要的時(shí)候通過(guò)切換環(huán)境來(lái)選擇不同的配置信息,這樣不是很方便嗎?

postman就提供了這樣的功能:


環(huán)境配置和變量查看按鈕15111919.png

若已配置過(guò)環(huán)境,可以通過(guò)選擇下方的環(huán)境名稱(chēng)來(lái)切換,request中的變量就會(huì)使用該環(huán)境中的值了...(這是廢話==)

點(diǎn)擊上圖下拉菜單中的 Manage Environments ,打開(kāi)管理環(huán)境管理頁(yè)面如下:

環(huán)境管理頁(yè)面

圖中的 app_dev 等環(huán)境是我之前已經(jīng)配置好的,初始是空白界面,點(diǎn)擊下方的 add 按鈕來(lái)新增一個(gè):

environment.png

Environment Name 中隨便填入便于自己記憶的名稱(chēng)即可
keyvalue 就填入自己需要的變量名和值即可,可以填入多對(duì);

tip: 如果不同環(huán)境的參數(shù)基本相同,直接復(fù)制一份已配置好的環(huán)境信息,再進(jìn)行修改即可:


復(fù)制已存在的環(huán)境信息

變量說(shuō)明

在postman中,變量有全局變量(GlobalVariable)和環(huán)境變量(EnvironmentVariable)之分,環(huán)境變量就是上面提到的在環(huán)境管理中設(shè)置的變量,全局變量可以在不同環(huán)境(No environment也算一種環(huán)境吧)都可以使用...(好吧,我又啰嗦了,就是生命周期不一樣,一個(gè)局部的一個(gè)全局的);

變量查看和修改

環(huán)境變量除了通過(guò)上面介紹的配置環(huán)境時(shí)進(jìn)行設(shè)定外,還可以通過(guò)代碼進(jìn)行設(shè)置,postman使用javaScript,從下圖的 Pre-request Script 中通過(guò)右側(cè)的 SNIPPETS 中預(yù)定義的常用腳本可以看到變量的設(shè)置方法:

postman.setEnvironmentVariable("variable_key", "variable_value");
postman.setGlobalVariable("variable_key", "variable_value");
設(shè)定變量

變量引用

官網(wǎng) Environment and global variables 部分有說(shuō)明;
通過(guò) {{variable_name}} 來(lái)使用,可以在 url地址欄,Headers,Pre-request Script,Tests中引用:

變量使用

在request之后,這些 {{}} 部分會(huì)被替代成實(shí)際的值,另外,Pre-request Script 中的腳本會(huì)在執(zhí)行request請(qǐng)求前先運(yùn)行,因此可以在里面預(yù)先設(shè)置些所需變量,而 Tests 中的腳本是在request返回后執(zhí)行的,可以對(duì)返回信息進(jìn)行提取過(guò)濾,舉個(gè)栗子,獲取如下返回信息中的 user_id 值:

// 假設(shè)服務(wù)端返回的Body內(nèi)容如下:
{
  "token": {
    "user_id": "2079876912",
    "access_token": "26A90E317DBC1AD363B2E2CE53F76F2DD85CB172DF7D813099477BAACB69DC49C794BAECEDC68331",
    "expires_at": "2016-06-22T12:46:51.637+0800",
    "refresh_token": "26A90E317DBC1AD3CD1556CF2B3923DD60AEBADDCBC1D9D899262A55D15273F735E407A6BEC56B84",
    "mac_key": "4FAhd4OpfC",
    "mac_algorithm": "hmac-sha-256",
    "server_time": "2016-06-15T12:46:51.649+0800"
  }
}

Tests 中對(duì) user_id 值進(jìn)行提取并賦值成全局變量:

// 判斷是否存在 'user_id' 值
tests["Body contains user_id"] = responseBody.has("user_id");
if(tests["Body contains user_id"]){
    // 將返回信息解析成對(duì)象
    var responseData = JSON.parse(responseBody);
    tests["value_user_id"]=responseData.token.user_id
    // 設(shè)置全局變量
    postman.setGlobalVariable("user_id",tests["value_user_id"]);
}else{
    // globals["test_user_id"] 是我在 `Pre-request Script` 中預(yù)定義好的一個(gè)常量值
    postman.setGlobalVariable("user_id",globals["test_user_id"]);
}

另外,在界面下方返回信息中的 Tests 標(biāo)簽中,代碼內(nèi)使用 tests[props_name] 括起來(lái)的屬性都會(huì)顯示結(jié)果:

返回信息

結(jié)合以上所說(shuō),我會(huì)新建個(gè)request用于初始化各種全局變量,運(yùn)行完以后再來(lái)運(yùn)行具體的api請(qǐng)求測(cè)試

Postman Interceptor

下載地址
這個(gè)插件我有挺喜歡,配合postman很方便,可以直接攔截瀏覽器中的request,記錄到postman中的 history 列表中,所需的header等信息也都一并處理好了,著實(shí)簡(jiǎn)單:

Postman Interceptor helps you send requests which use browser cookies through the Postman app.
It can also send headers which are normally restricted by Chrome but are critical for testing APIs. The Interceptor makes this process painless. Something that would have required a proxy earlier can now be achieved without any installation steps or extra configuration.

在chrome中啟用攔截器并設(shè)置過(guò)濾即可

實(shí)際試試,可以發(fā)現(xiàn),瀏覽器的各種請(qǐng)求都被記錄到了postman中的history列表中了,同時(shí),請(qǐng)求所需的各種頭信息也都被整理好了,很方便:


登錄Interceptor示例

附帶說(shuō)一下 runner ,也是挺好用的一個(gè)工具,對(duì)于整理歸類(lèi)過(guò)的api collections ,可以批量運(yùn)行,檢查api是否運(yùn)行正常,具體不再說(shuō)明,看動(dòng)態(tài)圖:

runner.gif
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末战坤,一起剝皮案震驚了整個(gè)濱河市靶端,隨后出現(xiàn)的幾起案子募狂,更是在濱河造成了極大的恐慌仔涩,老刑警劉巖烟瞧,帶你破解...
    沈念sama閱讀 212,542評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異篇梭,居然都是意外死亡蔼两,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)赔桌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)供炎,“玉大人,你說(shuō)我怎么就攤上這事疾党∫艚耄” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,021評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵雪位,是天一觀的道長(zhǎng)竭钝。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么蜓氨? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,682評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮队伟,結(jié)果婚禮上穴吹,老公的妹妹穿的比我還像新娘。我一直安慰自己嗜侮,他們只是感情好港令,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,792評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著锈颗,像睡著了一般顷霹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上击吱,一...
    開(kāi)封第一講書(shū)人閱讀 49,985評(píng)論 1 291
  • 那天淋淀,我揣著相機(jī)與錄音,去河邊找鬼覆醇。 笑死朵纷,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的永脓。 我是一名探鬼主播袍辞,決...
    沈念sama閱讀 39,107評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼常摧!你這毒婦竟也來(lái)了搅吁?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,845評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤落午,失蹤者是張志新(化名)和其女友劉穎谎懦,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體板甘,經(jīng)...
    沈念sama閱讀 44,299評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡党瓮,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,612評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了盐类。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片寞奸。...
    茶點(diǎn)故事閱讀 38,747評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖在跳,靈堂內(nèi)的尸體忽然破棺而出枪萄,到底是詐尸還是另有隱情,我是刑警寧澤猫妙,帶...
    沈念sama閱讀 34,441評(píng)論 4 333
  • 正文 年R本政府宣布瓷翻,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏齐帚。R本人自食惡果不足惜妒牙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,072評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望对妄。 院中可真熱鬧湘今,春花似錦、人聲如沸剪菱。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,828評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)孝常。三九已至旗们,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間构灸,已是汗流浹背上渴。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,069評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留喜颁,地道東北人驰贷。 一個(gè)月前我還...
    沈念sama閱讀 46,545評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像洛巢,于是被迫代替她去往敵國(guó)和親括袒。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,658評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理稿茉,服務(wù)發(fā)現(xiàn)锹锰,斷路器,智...
    卡卡羅2017閱讀 134,637評(píng)論 18 139
  • 博客已遷移漓库,該文章也是我16年那會(huì)寫(xiě)的了恃慧,經(jīng)過(guò)幾年P(guān)ostman已經(jīng)有不少變化,最近換團(tuán)隊(duì)為了推廣這個(gè)工具渺蒿,我對(duì)P...
    博客已遷移I米陽(yáng)閱讀 45,679評(píng)論 29 92
  • Postman用法簡(jiǎn)介-Http請(qǐng)求模擬工具 在我們平時(shí)開(kāi)發(fā)中痢士,特別是需要與接口打交道時(shí),無(wú)論是寫(xiě)接口還是用接口茂装,...
    奧利奧龍卷風(fēng)閱讀 4,206評(píng)論 2 9
  • Postman helps you develop APIs faster. 豪華午餐 Postman 構(gòu)建怠蹂、管理...
    Yuan_Jie閱讀 30,961評(píng)論 36 134
  • 曾有一個(gè)夢(mèng)想 夢(mèng)想自己背上行囊 曾有一個(gè)夢(mèng)想 夢(mèng)想自己踏上征途 我想 我有自己的夢(mèng)想 不是擁有多么優(yōu)秀的人生 不是...
    在線顯示i閱讀 256評(píng)論 0 0