Postman接口測試學(xué)習(xí)筆記

Postman 之前是作為Chrome 的一個(gè)插件捧毛,現(xiàn)在要下載應(yīng)用才能使用毯侦。

以下是postman 的界面:


各個(gè)功能區(qū)的使用如下:

快捷區(qū): 快捷區(qū)提供常用的操作入口,包括運(yùn)行收藏夾的一組測試數(shù)據(jù)练对,導(dǎo)入別人共享的收藏夾測試數(shù)據(jù)(Import from file, Import from folder, Import from link等)来农,或新建請求、收藏夾乘盼、環(huán)境變量等升熊。

側(cè)邊欄: 包括搜索欄, Request 請求的歷史記錄和收藏夾管理蹦肴。

功能區(qū): Request 請求設(shè)置僚碎,查看 Response 響應(yīng)結(jié)果和測試結(jié)果,可以將請求保存到收藏夾阴幌。

設(shè)置區(qū):設(shè)置和管理環(huán)境變量和全局變量勺阐。

一、環(huán)境變量和全局變量的設(shè)置:

a. 環(huán)境變量的設(shè)置方法如下圖矛双。點(diǎn)擊設(shè)置一個(gè)環(huán)境變量渊抽,名為"user_pwd", 里面設(shè)置username 和passwd的值,然后在請求中應(yīng)用這個(gè)環(huán)境變量"user_pwd"即可议忽。

環(huán)境變量可以使用在以下地方

URL

URL params

Header values

form-data/url-encoded values

Raw body content

Helper fields

注意:在你要使用的變量名上附上雙花括號懒闷,一個(gè)請求只能應(yīng)用一個(gè)環(huán)境變量。


下圖"username" 和"passwd" 的value值應(yīng)用了環(huán)境變量"user_pwd"栈幸,所以在body 中愤估,只需在key對應(yīng)的value那寫上變量{{username}}, {{passwd}}

注意:一個(gè)項(xiàng)目需要測試好幾個(gè)環(huán)境的情況速址,就可以對不同的環(huán)境設(shè)置一個(gè)環(huán)境變量玩焰,比如對“test environment”設(shè)置一個(gè)環(huán)境變量,對“stage environment”設(shè)置一個(gè)環(huán)境變量芍锚,對“production 環(huán)境”設(shè)置一個(gè)環(huán)境變量昔园。


b.全局變量的設(shè)置方法類似,如下圖并炮,點(diǎn)擊"Globals"?后就會出現(xiàn)添加環(huán)境變量類似的頁面默刚,進(jìn)行變量和值的設(shè)置。

注意:全局變量設(shè)置就應(yīng)用于整個(gè)收藏夾(Collection)中的請求逃魄,不用像環(huán)境變量一樣需要選取荤西。

二、用Postman做接口測試的實(shí)例

**接口測試中常用的請求為GET 和POST,以下均以這兩種請求為例皂冰。

GET 和POST 的區(qū)別:

GET 使用URL 或Cookie 傳參店展,而POST將數(shù)據(jù)放在Body 中。

GET的URL 在長度上會有限制秃流,而POST沒有赂蕴。

POST比GET相對安全,因?yàn)樵诘刂窓诓豢梢姟?/p>

一般POST請求用來獲取數(shù)據(jù)舶胀,POST請求用來發(fā)送數(shù)據(jù)概说。

**對于上面的區(qū)別,其實(shí)第一點(diǎn)POST也可以將數(shù)據(jù)放在URL里嚣伐,GET請求其實(shí)也沒有長度限制糖赔,POST請求看起來是隱式的,但是可以通過抓包拿到參數(shù)轩端。

1. GET 請求:

平常我們拿一個(gè)url 訪問頁面放典,就是所謂的get 請求。

例1.(stu_info 接口:獲取名字為xx 的信息)

將請求方式設(shè)為GET, 同時(shí)輸入完整的url基茵, 跟訪問瀏覽器一樣奋构, 或者輸入接口url, 點(diǎn)擊"Params"?輸入需要的key 以及value, 點(diǎn)擊"Send"拱层, 即可在"Response" 中查看返回的結(jié)果弥臼。

注意: get 請求的內(nèi)容不能放在body里,并且長度有限制根灯。由于對domain 設(shè)置了全局變量径缅,所以,url 中用變量{{domain}} 做了替換烙肺,以下的請求中都應(yīng)用了這個(gè)全局變量纳猪。


例2.?(all_stu?接口:獲取所有用戶的信息)

除了例1這種GET請求,還有些接口發(fā)送GET請求時(shí)除了發(fā)送key-value, 還要將Headers的信息也一起發(fā)送過去桃笙,這樣就可以借助Postman來實(shí)現(xiàn)兆旬。以下圖為例,需要在Headers 里添加"Referer"信息怎栽,以獲取所有用戶的信息。

?2. POST請求:

POST 請求不能像GET一樣直接在瀏覽器輸入就可以請求宿饱,需要借助工具來完成熏瞄。

使用方法:選擇請求方式為post,輸入請求的url谬以,以及輸入必要的"Authorization" ,?"header"?和"Body"?數(shù)據(jù)强饮。post請求可以發(fā)送key-value, json格式,file等为黎。

對于"Authorization"的使用邮丰,遇到比較多的是Type?為"Basic Auth", 然后設(shè)置對應(yīng)的Username 和Password行您。

這里的username, password的值可以通過設(shè)置環(huán)境變量的方式取得。

a. 用Postman 發(fā)送key-value 的請求:

以login 接口為例剪廉,在Body 中選取"form-data"?格式娃循,輸入所需的key-value, 選取對應(yīng)的環(huán)境變量。

b. 用Postman 發(fā)送json格式的請求:

以add user 接口為例斗蒋,在Body 中選取"raw"?格式捌斧,根據(jù)接口文檔輸入json 數(shù)據(jù), 有需要應(yīng)用環(huán)境變量的選取環(huán)境變量泉沾。

c. 用Postman 發(fā)送文件的請求:

以file upload 接口為例,在Body 中選取"form-data"格式,在key 里輸入"file"音瓷,在右邊的下拉里選取類型為"File"般甲,點(diǎn)擊"Choose Files" 就可以上傳本地文件了。

三俊马、Pre-requestScript 的使用

?對于環(huán)境變量和全局變量的使用丁存,除了上面所講的方法外,也可以用Pre-requestScript 方法潭袱。

以login接口為例柱嫌,在"Pre-requestScript"中設(shè)置環(huán)境變量?"username", "passwd",在Body 中選取"form-data"格式,輸入所需的key-value, value即為變量{{username}}, {{passwd}}屯换。

postman. setEnvironmentVariable (“key”, “value”);

postman. setGlobalVariable (“key”, “value”);

getEnvironmentVariable ("key");//獲取key的環(huán)境變量

getGlobalVariable(“key”);//獲取key的全局變量

四编丘、Tests 的使用

1. Tests 作為測試用例的應(yīng)用

Tests 主要用來設(shè)計(jì)用例,比如要測試返回結(jié)果是否含有某一字符串彤悔,就可以用到 Tests嘉抓。以gold_add 接口為例,來編寫測試用例晕窑,分別測試返回的結(jié)果是否含有抑片,如下所示:

響應(yīng)成功返回PASS, 失敗返回FAIL。

?常用tests如下:

1.檢查response body中是否包含某個(gè)string

tests["Body matches string"] = responseBody.has("string_you_want_to_search");

注意:"Body matches string" 需唯一杨赤。

2.檢測JSON中的某個(gè)值是否等于預(yù)期的值

var data = JSON.parse(responseBody);

tests["Your test name"] = data.value === 100;

JSON.parse()方法敞斋,把json字符串轉(zhuǎn)化為對象。parse()會進(jìn)行json格式的檢查是一個(gè)安全的函數(shù)疾牲。?

如:檢查json中某個(gè)數(shù)組元素的個(gè)數(shù)(這里檢測programs的長度)

var data = JSON.parse(responseBody);

tests["program's lenght"] = data.programs.length === 5;

3.檢查response body是否與某個(gè)string相等

4.轉(zhuǎn)換XML body為JSON對象

var jsonObject = xml2Json(responseBody);

tests["Body is correct"] = responseBody === "response_body_string";

5.測試response Headers中的某個(gè)元素是否存在(如:Content-Type)

tests["Content-Type is present"] = postman.getResponseHeader("Content-Type");?

//getResponseHeader()方法會返回header的值植捎,如果該值存在

或者:?

tests["Content-Type is present"] = responseHeaders.hasOwnProperty("Content-Type");

上面的方法,不區(qū)分大小寫阳柔。下面的方法焰枢,要區(qū)分大小寫。?

6.驗(yàn)證Status code的值

tests["Status code is 200"] = responseCode.code === 200;

7.驗(yàn)證Response time是否小于某個(gè)值

tests["Response time is less than 200ms"] = responseTime < 200;

8.name是否包含某個(gè)值

tests["Status code name has string"] = responseCode.name.has("Created");

9.POST 請求的狀態(tài)響應(yīng)碼是否是某個(gè)值

tests["Successful POST request"] = responseCode.code === 201 || responseCode.code === 202;

10.很小的JSON數(shù)據(jù)驗(yàn)證器

var schema = {

"items": {

"type": "boolean"

}

};

var data1 = [true, false];

var data2 = [true, 123];

console.log(tv4.error);

tests["Valid Data1"] = tv4.validate(data1, schema);

tests["Valid Data2"] = tv4.validate(data2, schema);

2. 設(shè)置環(huán)境變量,建立多個(gè)接口間的關(guān)聯(lián)

以gold_add 接口為例济锄,由于該接口有權(quán)限驗(yàn)證暑椰,需要admin用戶才可以做操作,需要添加cookie荐绝,所以需要將login 接口關(guān)聯(lián)起來使用一汽。

在login 請求中, 在"Tests"中加入

var jsonData =JSON.parse(responseBody);//獲取body中返回的所有參數(shù)

postman.setEnvironmentVariable("sign",jsonData.login_info.sign);//把返回參數(shù)中的sign設(shè)置為環(huán)境變量

這樣sign 就可以作為環(huán)境變量很泊,應(yīng)用于gold_add接口角虫。

在gold_add 接口中,{{username}} 由于在環(huán)境變量"user_pwd" 中已經(jīng)設(shè)置委造,可以直接輸入變量名, {{sign}} 動態(tài)取得login接口中 Response 的 "sign" 值戳鹅,{{sign}}已在上面login 請求的"Tests" 中定義。

以上就是postman接口測試基本使用方法總結(jié)昏兆。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末枫虏,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子爬虱,更是在濱河造成了極大的恐慌隶债,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件跑筝,死亡現(xiàn)場離奇詭異死讹,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)曲梗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進(jìn)店門赞警,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人虏两,你說我怎么就攤上這事愧旦。” “怎么了定罢?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵笤虫,是天一觀的道長。 經(jīng)常有香客問我祖凫,道長琼蚯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任惠况,我火速辦了婚禮遭庶,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘售滤。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布完箩。 她就那樣靜靜地躺著赐俗,像睡著了一般。 火紅的嫁衣襯著肌膚如雪弊知。 梳的紋絲不亂的頭發(fā)上阻逮,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天,我揣著相機(jī)與錄音秩彤,去河邊找鬼叔扼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛漫雷,可吹牛的內(nèi)容都是我干的瓜富。 我是一名探鬼主播,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼降盹,長吁一口氣:“原來是場噩夢啊……” “哼与柑!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蓄坏,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤价捧,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后涡戳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體结蟋,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年渔彰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了嵌屎。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,013評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡胳岂,死狀恐怖编整,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情乳丰,我是刑警寧澤掌测,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站产园,受9級特大地震影響汞斧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜什燕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一粘勒、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧屎即,春花似錦庙睡、人聲如沸事富。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽统台。三九已至,卻和暖如春啡邑,著一層夾襖步出監(jiān)牢的瞬間贱勃,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工谤逼, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留贵扰,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓流部,卻偏偏與公主長得像戚绕,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子贵涵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評論 2 355

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