接口調(diào)試神器:Postman 從入門到進(jìn)階教程(萬字長文)!

postman是一款支持http協(xié)議的接口調(diào)試與測試工具,其主要特點(diǎn)就是功能強(qiáng)大,使用簡單且易用性好 。
無論是開發(fā)人員進(jìn)行接口調(diào)試,還是測試人員做接口測試,postman都是我們的首選工具之一 。
那么接下來就介紹下postman到底有哪些功能,它們分別都能干些什么 。下面先通過一張圖來直觀的來看下postman中所包含的功能 。
當(dāng)然,以上功能也只是展示了postman的一部分功能,為了能更加全面的體現(xiàn)這款工具的特點(diǎn),我將從以下三個維度來加以說明。它們分別是:
基礎(chǔ)功能
常見類型的接口請求 接口響應(yīng)數(shù)據(jù)的解析 接口管理(Collection) 批量執(zhí)行接口請求 日志調(diào)試 斷言 變量 請求前置腳本 接口關(guān)聯(lián) 常見的返回值獲取 便捷功能快
速填寫查詢參數(shù) 快速填寫請求頭信息 快速實(shí)現(xiàn)添加一個請求 如何繼承集合認(rèn)證 批量斷言 快速查詢和替換 高級功能
讀取文件進(jìn)行參數(shù)化 生成測試報告 代碼中發(fā)送請求 編寫接口文檔 mock服務(wù) 監(jiān)控 使用工作空間 代碼同步與分支管理 連接數(shù)據(jù)庫 apis
「一. postman安裝說明」
postman 在 2018 年之后就不再支持瀏覽器版本,所以,想要使用它就必須先下載客戶端再安裝使用,下面就以 Windows 系統(tǒng)為例進(jìn)行安裝 。
「1. 下載與安裝」
postman安裝步驟:
\1. 訪問postman官方網(wǎng)站,下載最新版本
訪問地址:https://www.getpostman.com/
\2. 進(jìn)入到下載頁面,根據(jù)自己電腦下載對應(yīng)的版本
\3. 雙擊下載的安裝包,進(jìn)入到安裝界面,直到用戶登錄和注冊界面。
若個人使用,選擇跳過即可,這時會進(jìn)入到postman主界面,至此postman安裝成功(下圖)。
若團(tuán)隊(duì)使用,可以進(jìn)行注冊,注冊后使用賬號可以加入團(tuán)隊(duì)工作區(qū)
「2.界面導(dǎo)航說明」
初次使用postman的朋友可能對界面上的一些元素不太熟悉,下面就通過一張圖來說明這些元素的含義 。
「3.發(fā)送第一個請求」
如果你是第一次使用postman發(fā)送請求,下面這個例子可以作為一個最基本的入門,可以幫我們建立一個初始印象 。
\1. 打開postman,點(diǎn)擊+加號打開一個新的請求頁。
\2. 在請求的URL中輸入請求地址:
http://www.weather.com.cn/data/sk/101010100.html
\3. 點(diǎn)擊Send按鈕,這時就可以在下部的窗格中看到來自服務(wù)器的json響應(yīng)數(shù)據(jù)。
「二.postman基礎(chǔ)功能」
「1.常見類型的接口請求」
常見的接口有如下四種類型,分別是含有查詢參數(shù)的接口,表單類型的接口,json類型的接口以及含有上傳文件的接口,以下就對這四種類型接口及如何在postman中請求進(jìn)行說明 。
「1.1 .查詢參數(shù)的接口請求」
「什么是查詢參數(shù)?」
所謂的查詢參數(shù),其實(shí)就是URL地址中問號(?)后面的部分就叫查詢參數(shù),比如:http://cx.shouji.#/phonearea.php?number=13012345678 。在這個接口中,查詢參數(shù)就是:「number=13012345678」 。
而這一部分是由有鍵值對組成,格式為:key1=value1&key2=value2, 如果有多組鍵值對,要用&隔開 。
「postman如何請求」
在postman中實(shí)現(xiàn)對這類接口請求非常簡單,一般就需要明確倆個參數(shù)即可,一個是請求方法,一個請求地址。
針對上面的那個接口,地址已經(jīng)給出 ,而它的請求方法是get 。那么在postman中只需要把這倆個參數(shù)填寫上即可請求 。
具體實(shí)現(xiàn)步驟:
\1. 打開postman,新建一個請求。
\2. 在請求方法中選擇請求方法:GET,因?yàn)樵趐ostman中默認(rèn)的請求方法就是GET,所以這一步可以忽略
\3. 接口URL中輸入地址,點(diǎn)擊Send按鈕就可以發(fā)送請求了 。
說明:查詢參數(shù)的URL一般直接拷貝到輸入的URL地址欄中就可以了,當(dāng)然也可以把查詢參數(shù)在Params中輸入,倆者的效果是一樣的 。
「1.2 表單類型的接口請求」
「什么是表單 ?」
我們都知道,在發(fā)送HTTP請求的時候,一個請求中一般包含三個部分,分別是請求行,請求頭,請求體 。
不同的接口,請求體的數(shù)據(jù)類型是不一樣的,比較常見的一種就是表單類型,那么什么是表單類型呢 ?簡單理解就是在請求頭中查看「Content-Type,它的值如果是:application/x-www-form-urlencoded」 .那么就說明客戶端提交的數(shù)據(jù)是以表單形式提交的 。見下圖:
「postman中如何請求?」
如果在postman請求上圖的接口,我們只需要填寫四個參數(shù),分別是(可以參考上圖):
請求方法:POST
請求URL:
http://localhost/index.php?m=Home&c=User&a=do_login&t=0.21942974229794432
請求頭:Content-Type:application/x-www-form-urlencode
請求體:username=13088888888&password=123456&verify_code=8888
實(shí)現(xiàn)步驟:
打開postman,新建一個請求 。 在請求中設(shè)置以上四個參數(shù),點(diǎn)擊Send按鈕。在postman中設(shè)置請求體類型為,需要「選擇body-> x-www-form-urlencoded」 查看響應(yīng)數(shù)據(jù)。
「1.3 上傳文件的表單請求」
在做接口測試時,我們經(jīng)常會遇到需要上傳文件的接口,比如微信的更新頭像。這就需要用到:multipart/form-data。它也屬于一種表單,但它既支持表單請求,也支持文件上傳。它的請求報文中數(shù)據(jù)往往是下面這樣的。
POST http://localhost/index.php/home/Uploadify/imageUp/savepath/head_pic/pictitle/banner/dir/images.html HTTP/1.1
Content-Type: multipart/form-data
file=a1.jpg
這種類型的接口,在postman中該如何請求呢 ?我們先分析需要填寫的參數(shù) 。
請求方法:POST
請求URL:
http://localhost/index.php/home/Uploadify/imageUp/savepath/head_pic/pictitle/banner/dir/images.html
請求類型:multipart/form-data
請求體:file=a1.jpg
實(shí)現(xiàn)步驟:
打開postman,新建一個請求 。 在請求中設(shè)置以上四個參數(shù),點(diǎn)擊Send按鈕。注意:在postman中設(shè)置請求體類型,需要「選擇body-> form-data」 。file中要選擇File類型,然后上傳本地的文件 。 查看響應(yīng)數(shù)據(jù)。
「1.4 json類型的接口請求」
這應(yīng)該是接口測試中最常見的一種情況了 , 也就是請求體類型為json,我們來看下這個請求報文 。
POST http://xxx/api/sys/login HTTP/1.1
Content-Type: application/json;charset=UTF-8
{"account":"root","password":"123456"}
根據(jù)以上報文,我們可以分析出,我們在postman只需要填寫四個參數(shù)即可,具體如下:
請求方法:POST 請求地址:http://xxx/api/sys/login 請求體類型:json 請求體數(shù)據(jù):{"account":"root","password":"123456"}
實(shí)現(xiàn)步驟:
打開postman,新建一個請求 。 在請求中設(shè)置以上四個參數(shù),點(diǎn)擊Send按鈕。注意:在postman中設(shè)置請求體類型,需要「選擇body-> raw -JSON」 查看響應(yīng)數(shù)據(jù)。
「2.接口響應(yīng)數(shù)據(jù)解析」
響應(yīng)數(shù)據(jù)是發(fā)送請求后經(jīng)過服務(wù)器處理后返回的結(jié)果,響應(yīng)由三部分組成,分別是狀態(tài)行、響應(yīng)頭、響應(yīng)體。我們來看下postman的響應(yīng)數(shù)據(jù)展示。
在postman中的響應(yīng)數(shù)據(jù)展示:
狀態(tài)行:Status:200 OK 響應(yīng)頭:Headers + Cookies,需要注意的是Cookies是包含在響應(yīng)頭中的,但是為了明顯,工具會分開顯示 響應(yīng)體:Body
那么這些數(shù)據(jù)對我們做接口測試有什么作用呢 ?
Body和Status是我們做接口測試的重點(diǎn),一般來說我們都會驗(yàn)證響應(yīng)體中的數(shù)據(jù)和響應(yīng)狀態(tài)碼 Test Results 是我們編寫斷言后,可以查看斷言的執(zhí)行結(jié)果 ,所以這個對我們也很有用 。 Time 和Size 是我們做性能測試時,可以根據(jù)這兩個參數(shù)來對所測接口的性能做一個簡單的判斷。
接下來我們再來關(guān)注下Body中的幾個顯示主題,分別是:Pretty,Raw,Preview .
Pretty:翻譯成中文就是漂亮 , 也就是說返回的Body數(shù)據(jù)在這個標(biāo)簽中查看 ,都是經(jīng)過格式化的,格式化后的數(shù)據(jù)看起來更加直觀,所以postman默認(rèn)展示的也是這個選項(xiàng)。比如返回html頁面,它會經(jīng)過格式化成HTML格式后展示,比如返回json,那么也會格式化成json格式展示 。
Raw:翻譯成中文未經(jīng)過加工的,也就是原始數(shù)據(jù) ,原始數(shù)據(jù)一般都是本文格式的,未經(jīng)過格式化處理的,一般在抓包工具中都有這個選項(xiàng) 。
Preview:翻譯成中文就是預(yù)覽,這個選項(xiàng)一般對返回HTML的頁面效果特別明顯,如請求百度后返回結(jié)果,點(diǎn)擊這個選項(xiàng)后就直接能查看到的頁面 ,如下圖 。同時這個選項(xiàng)和瀏覽器抓包中的Preview也是一樣的 。
「3. 接口管理(Collection)」
當(dāng)我們對一個或多個系統(tǒng)中的很多用例進(jìn)行維護(hù)時,首先想到的就是對用例進(jìn)行分類管理,同時還希望對這批用例做回歸測試 。在postman也提供了這樣一個功能,就是Collection 。通過這個Collection就可以滿足我們的上面說的需求。
先對Collection功能的使用場景做個簡單總結(jié) 。
用例分類管理,方便后期維護(hù) 可以進(jìn)行批量用例回歸測試 。
那么Collection是如何去管理用例的呢 ?先想象我們要測試一個系統(tǒng),系統(tǒng)下有多個模塊,每個模塊下有很多的被測接口用例 。那么基于這個場景,我們來通過Collection來進(jìn)行實(shí)現(xiàn):
\1. 點(diǎn)擊Collection,點(diǎn)擊+New Collection,在彈出的輸入框中輸入Collection名稱(這個就可以理解為所測試的系統(tǒng))
\2. 選中新建的Collection右鍵,點(diǎn)擊Add Folder ,在彈出對話框中輸入文件夾名稱(這個就可以理解為系統(tǒng)中的模塊)
\3. 選中新建的Folder,點(diǎn)擊Add Request ,在彈出的對話框中輸入請求名稱,這個就是我們所測試的接口,也可以理解為測試用例 。
那么通過以上三個步驟,達(dá)到的效果就是如圖所示:
總結(jié),通過上面的操作,我們實(shí)現(xiàn)了一個最簡單的demo模型。但實(shí)際上,有了這個功能才是postman學(xué)習(xí)的開始,因?yàn)楹芏喙δ芏际腔A(chǔ)這個功能的基礎(chǔ)上進(jìn)行的,比如用例的批量執(zhí)行,Mock ,接口文檔等功能 。
「4. 批量執(zhí)行接口請求」
當(dāng)我們在一個Collection中編寫了很多的接口測試用例,想一起執(zhí)行這批用例,在postman中是如何操作呢 ?
實(shí)現(xiàn)步驟:
\1. 選中一個Collection,點(diǎn)擊右三角,在彈出的界面點(diǎn)擊RUN
\2. 這是會彈出一個叫Collection Runner的界面,默認(rèn)會把Collection中的所有用例選中 。
\3. 點(diǎn)擊界面下方的RUN Collection,就會對Collection中選中的所有測試用例運(yùn)行 。
對上面的幾個紅框內(nèi)的功能進(jìn)行簡單說明:
「斷言統(tǒng)計(jì)」:左上角的兩個0是統(tǒng)計(jì)當(dāng)前Collection中斷言成功的執(zhí)行數(shù)和失敗的執(zhí)行數(shù),如果沒有編寫斷言默認(rèn)都為0 。 Run Summary: 運(yùn)行結(jié)果總覽,點(diǎn)擊它可以看到每個請求中具體的測試斷言詳細(xì)信息 。Export Result:導(dǎo)出運(yùn)行結(jié)果,默認(rèn)導(dǎo)出的結(jié)果json文件 。 Retry: 重新運(yùn)行,點(diǎn)擊它會把該Collection重新運(yùn)行一遍 New:返回到Runner,可以重新選擇用例的組合 。
總體來說,這個功能主要是用于對一個Collection中的所有用例或部分用例進(jìn)行批量運(yùn)行,已達(dá)到手工回歸測試的目的。
「5.日志調(diào)試」
在做接口測試時,經(jīng)常會因?yàn)榇a寫的有問題導(dǎo)致報錯,這時通過查看日志就顯得非常重要了,postman也提供了這樣的功能,它允許我們在腳本中編寫打印語句,查看打印的結(jié)果 ; 同時也可以查看每個請求的日志信息 。
在postman中編寫日志打印語句使用的是JavaScript,編寫的位置可以是Pre-request Script 或Tests標(biāo)簽中。編寫打印語句如:console.log("我是一條日志")

那么打印的日如何看呢 ?在postman中有倆個入口,第一個入口就是:view-show postman console 。
第二個入口就是左下角第三個圖標(biāo) 。

打開的日志界面:

這里面有幾個比較實(shí)用的功能:
搜索日志:輸入URL或者打印的日志就能直接搜索出我們想要的請求和日志,這對我們在眾多日志中查找某一條日志是非常方便的 。 按級別搜索:可以查詢log,info,warning,error級別的日志 ,有助于我們更快定位到錯誤 。 查看原始報文(Show raw log):如果習(xí)慣看原始請求報文的話,這個功能可能更方便些 。 隱藏請求(Hide network):把請求都隱藏掉,只查看輸出日志 。
總之,通過這個功能,我們在請求接口報錯時,通過打印響應(yīng)的日志,就能很輕松的找到問題原因了 。
「6.斷言」
如果沒有斷言,我們只能做接口的功能測試,但有了斷言后,就為我們做自動化提供了條件,并且在postman中的斷言是非常方便和強(qiáng)大的 。
我們先來了解下postman斷言的一些特點(diǎn) ,具體如下
斷言編寫位置:Tests標(biāo)簽 斷言所用語言:JavaScript 斷言執(zhí)行順序:在響應(yīng)體數(shù)據(jù)返回后執(zhí)行 。 斷言執(zhí)行結(jié)果查看:Test Results
在上面我們介紹到,編寫的斷言代碼是JavaScript,那如果不會寫怎么辦 ?不用擔(dān)心,因?yàn)閜ostman已經(jīng)給我們內(nèi)置了一些常用的斷言 。用的時候,只需從右側(cè)點(diǎn)擊其中一個斷言,就會在文本框中自動生成對應(yīng)斷言代碼塊 。

接下來就讓我們了解一些常用斷言,還是按響應(yīng)的組成來劃分,分別是狀態(tài)行,響應(yīng)頭,響應(yīng)體。
狀態(tài)行中又包括狀態(tài)碼,狀態(tài)消息 。在postman也可以對這兩個進(jìn)行斷言
「狀態(tài)行中的斷言」:
斷言狀態(tài)碼:「Status code: code is 200」
pm.test("Status code is 200", function () {
pm.response.to.have.status(200); //這里填寫的200是預(yù)期結(jié)果,實(shí)際結(jié)果是請求返回結(jié)果
});
斷言狀態(tài)消息:「Status code:code name has string」
pm.test("Status code name has string", function () {
pm.response.to.have.status("OK"); //斷言響應(yīng)狀態(tài)消息包含OK
});
「響應(yīng)頭中的斷言」
斷言響應(yīng)頭中包含:Response headers:Content-Type header check
pm.test("Content-Type is present", function () {
pm.response.to.have.header("Content-Type"); //斷言響應(yīng)頭存在"Content-Type"
});
「斷言響應(yīng)體(重點(diǎn))」
斷言響應(yīng)體中包含XXX字符串:Response body:Contains string
pm.test("Body matches string", function () {
pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});
//注解
pm.expect(pm.response.text()).to.include("string") 獲取響應(yīng)文本中包含string
斷言響應(yīng)體等于XXX字符串:Response body : is equal to a string
pm.test("Body is correct", function () {
pm.response.to.have.body("response_body_string");
});
//注解
pm.response.to.have.body("response_body_string"); 獲取響應(yīng)體等于response_body_string
斷言響應(yīng)體(json)中某個鍵名對應(yīng)的值:Response body : JSON value check
pm.test("Your test name", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.value).to.eql(100);
});
//注解
var jsonData = pm.response.json() 獲取響應(yīng)體,以json顯示,賦值給jsonData .注意:該響應(yīng)體必須返會是的json,否則會報錯
pm.expect(jsonData.value).to.eql(100) 獲取jsonData中鍵名為value的值,然后和100進(jìn)行比較
「響應(yīng)時間(一般用于性能測試)」
斷言響應(yīng)時間:Response time is less than 200ms
pm.test("Response time is less than 200ms", function () {
pm.expect(pm.response.responseTime).to.be.below(200); //斷言響應(yīng)時間<200ms
});
「案例說明」:
針對以下接口返回的數(shù)據(jù)進(jìn)行斷言:
{
"cityid": "101120101",
"city": "濟(jì)南",
"update_time": "2020-04-17 10:50",
"wea": "晴",
"wea_img": "qing",
"tem": "16",
"tem_day": "20",
"tem_night": "9",
"win": "東北風(fēng)",
"win_speed": "3級",
"win_meter": "小于12km/h",
"air": "113"
}
斷言響應(yīng)狀態(tài)碼為200 斷言city等于濟(jì)南 斷言update_time包含2020-04-17

總結(jié),整體來說,如果用postman做接口測試,這個斷言功能必不可少,其中我們常斷言的響應(yīng)體包含和JSON這倆個斷言又是重重之重。
「7. 變量(全局/集合/環(huán)境)」
變量可以使我們在請求或腳本中存儲和重復(fù)使用其值,通過將值保存在變量中,可以在集合,環(huán)境或請求中引用。
對我們做接口測試來說,又是一個非常重要的功能 。
在postman常用的三種變量分別是全局變量,環(huán)境變量,集合變量 。
「全局變量」:一旦申明了全局變量,全局有效,也就是說postman中的任何集合,任何請求中都可以使用這個變量。它的作用域是最大的 。 「環(huán)境變量」:要申明環(huán)境變量,首先的創(chuàng)建環(huán)境,然后在環(huán)境中才能創(chuàng)建變量 。如果要想使用環(huán)境變量,必須先選擇(導(dǎo)入)這個環(huán)境,這樣就可以使用這個環(huán)境下的變量了 。需要說明的是環(huán)境也可以創(chuàng)建多個 。每個環(huán)境下又可以有多個變量 。 「集合變量」:集合變量是針對集合的,也就是說申明的變量必須基于某個集合,它的使用范圍也只是針對這個集合有效 。
其中,他們的作用域范圍依次從大到?。喝肿兞?gt;集合變量>環(huán)境變量 。當(dāng)在幾個不同的范圍內(nèi)都申明了相同的變量時,則會優(yōu)先使用范圍最小的變量使。
想要使用變量中的值只需倆個步驟,分別是定義變量和獲取變量 。
定義變量(設(shè)置變量) 獲取變量(訪問變量)
「定義變量」
定義全局變量和環(huán)境變量,點(diǎn)擊右上角的小齒輪,彈出如下界面,就可以根據(jù)需求定義全局變量或者環(huán)境變量了。

已經(jīng)定義的全局變量和環(huán)境變量,可以進(jìn)行快速查看:

「定義集合變量」
選擇一個集合,打開查看更多動作(「...」)菜單,然后點(diǎn)擊編輯 。選擇“變量”選項(xiàng)卡以編輯或添加到集合變量。

定義變量除了以上方式,還有另外一種方式 。但是這種方式在不同的位置定義,編寫不一樣。
在URL,Params , Authorization , Headers , Body中定義:
\1. 手工方式創(chuàng)建一個空的變量名
\2. 在以上的位置把想要的值選中右擊,選中Set:環(huán)境|全局 ,選中一個變量名,點(diǎn)擊后就會保存到這個變量中

在Tests,Pre-requests Script:
定義全局變量:pm.collectionVariables.set("變量名",變量值) 定義環(huán)境變量:pm.environment.set("變量名",變量值) 定義集合變量:pm.variables.set("變量名",變量值)
「獲取變量」
定義好變量,接下來就可以使用變量了 。需要注意的是,在不同的位置獲取變量,編寫的規(guī)則也是不一樣的 。
如果在「請求參數(shù)中」獲取變量,無論是獲取全局變量,還是環(huán)境變量,還是集合變量,獲取的方式都是一樣的編寫規(guī)則:{{變量名}} 。
請求參數(shù)指的是:URL,Params , Authorization , Headers , Body
如果是在編寫代碼的位置(Tests,Pre-requests Script)獲取變量,獲取不同類型的變量,編寫的代碼都不相同,具體如下:
獲取環(huán)境變量:pm.environment.get(‘變量名’) 獲取全局變量:pm.globals.get('變量名') 獲取集合變量:pm.pm.collectionVariables.get.get('變量名')

變量的使用場景非常廣泛,比如我們后面要提到的接口關(guān)聯(lián),請求前置腳本都會使用到變量 。
「8. 請求前置腳本」
前置腳本其實(shí)就是在Pre-requests Script中編寫的JavaScript腳本,想要了解這個功能,需要先了解它的執(zhí)行順序。那么下面就來看下它的執(zhí)行順序 。
可以看出,一個請求在發(fā)送之前,會先去執(zhí)行Pre Request Script(前置腳本)中的代碼 。那么這個功能在實(shí)際工作中有什么作用呢 ?
主要場景:一般情況下,在發(fā)送請求前需要對接口的數(shù)據(jù)做進(jìn)一步處理,就都可以使用這個功能,比如說,登錄接口的密碼,在發(fā)送前需要做加密處理,那么就可以在前置腳本中做加密處理,再比如說,有的接口的輸入?yún)?shù)有一些隨機(jī)數(shù),每請求一次接口參數(shù)值都會發(fā)送變化,就可以在前置腳本中編寫生成隨機(jī)數(shù)的代碼 。
總體來說,就是在請求接口之前對我們的請求數(shù)據(jù)進(jìn)行進(jìn)一步加工處理的都可以使用前置腳本這個功能。
接下來通過一個案例來看下該功能是如何使用 ?
案例:
請求的登錄接口URL,參數(shù)t的值要求的規(guī)則是每次請求都必須是一個隨機(jī)數(shù)。
接口地址:
http://localhost/index.php?m=Home&c=User&a=do_login&t=0.7102045930338428

實(shí)現(xiàn)步驟:
在前置腳本中編寫生成隨機(jī)數(shù) 將這個值保存成環(huán)境變量 將參數(shù)t的值替換成環(huán)境變量的值 。

總之,這個前置腳本對我們做接口測試也非常有用,對一些復(fù)雜的場景,都可以使用前置腳本進(jìn)行處理后再請求接口 。
「9. 接口關(guān)聯(lián)」
在我們測試的接口中,經(jīng)常出現(xiàn)這種情況 。上一個接口的返回數(shù)據(jù)是下一個接口的輸入?yún)?shù) ,那么這倆個接口就產(chǎn)生了關(guān)聯(lián)。這種關(guān)聯(lián)在做接口測試時非常常見,那么在postman中,如何實(shí)現(xiàn)這種關(guān)聯(lián)關(guān)系呢 ?
實(shí)現(xiàn)思路:
提取上一個接口的返回數(shù)據(jù)值, 將這個數(shù)據(jù)值保存到環(huán)境變量或全局變量中 在下一個接口獲取環(huán)境變量或全局變量
案例:
用戶上傳頭像功能,需要用戶先上傳一張圖片,然后會自動預(yù)覽 。那么在這個過程中,會調(diào)用到倆個接口 ,第一個上傳頭像接口,第二個預(yù)覽圖像接口 。 其中調(diào)用上傳頭像接口成功后會返回如下信息:
{
"url": "/public/upload/user//head_pic//ba51d1c2f7f7b98dfb5cad90846e2d79.jpg",
"title": "banner",
"original": "",
"state": "SUCCESS",
"path": "images"
}
而圖像預(yù)覽接口URL為:
http://localhost/public/upload/user//head_pic//ba51d1c2f7f7b98dfb5cad90846e2d79.jpg ??梢钥闯鲞@個接口的URL后半部分其實(shí)是上一個接口返回的url的值 。那么這倆個接口就產(chǎn)生了關(guān)聯(lián)。那么在postman 可以通過以下三步完成這倆個接口的關(guān)聯(lián)實(shí)現(xiàn) 。
實(shí)現(xiàn)步驟:
獲取上傳頭像接口返回url的值 將這個值保存成全局變量(環(huán)境變量也可以) 在圖像預(yù)覽中使用全局變量

可以看出,接口的關(guān)聯(lián)的解決方案都是用的是變量中的知識,也就是說只要你明確了要提取的值,后面就是保存該值,然后在其他接口使用該值就可以了。
「10.常見返回值獲取」
在做接口測試時,請求接口返回的數(shù)據(jù)都是很復(fù)雜的json數(shù)據(jù),有著多層嵌套,這樣的數(shù)據(jù)層級在postman怎么獲取呢 ?
案例1:多層json嵌套, 獲取user_id的值
{
"code": 0,
"message": "請求成功!",
"data": {
"user_id": "1252163151781167104"
}
}
//獲取json體數(shù)據(jù)
var jsonData = pm.response.json()
// 獲取user_id的值,通過.獲取
var user_id = jsonData.data.user_id
案例2:json中存在列表,獲取points中的第二個元素
{
"code": 0,
"message": "請求成功!",
"data": {
"roles": {
"api": [
"API-USER-DELETE"
],
"points": [
"point-user-delete",
"POINT-USER-UPDATE",
"POINT-USER-ADD"
]
},
"authCache": null
}
}
//獲取json體數(shù)據(jù)
var jsonData = pm.response.json()
// 獲取user_id的值,通過下標(biāo)獲取列表中某個元素
var user_id = jsonData.data.roles.points[1]
案例3:列表中取最后一個元素
{
"code": 0,
"message": "請求成功!",
"data": {
"total": 24,
"rows": [
{
"id": "1066370498633486336",
"mobile": "15812340003",
"username": "zbz"
},
{
"id": "1071632760222810112",
"mobile": "16612094236",
"username": "llx"
},
...
{
"id": "1075383133106425856",
"mobile": "13523679872",
"username": "test001",
},
//獲取json體數(shù)據(jù)
var jsonData = pm.response.json()
// 獲取id的值,通過slice(-1)獲取列表中最后一個元素。
var id = jsonData.data.rows.slice(-1)[0]
還不過癮?試試它們
▲Python在計(jì)算內(nèi)存時應(yīng)該注意的問題?
