postman接口自動(dòng)化

接口自動(dòng)化整理

一稠诲、Post與Get區(qū)別

1舵匾、Get?方法通過URL?請求來傳遞用戶的數(shù)據(jù),將表單內(nèi)各字段名稱與其內(nèi)容册赛,以成對(duì)的字符串連接钠导,置于action?屬性所指程序的url?后,

如:[url]http://www.mdm.com/test.asp?name=asd&password=sad[/url]森瘪,數(shù)據(jù)都會(huì) 直接顯示在url?上牡属,就像用戶點(diǎn)擊一個(gè)鏈接一樣;

2扼睬、Post?方法通過HTTP post?機(jī)制逮栅,將表單內(nèi)各字段名稱與其內(nèi)容放置在HTML?表頭(header)內(nèi)一起傳送給服務(wù)器端交由action?屬性能所指的程序處理,該程序會(huì)通過標(biāo)準(zhǔn)輸入(stdin)方式窗宇,將表單的數(shù)據(jù)讀出并加以處理

3措伐、Get?方式需要使用Request.QueryString?來取得變量的值;而Post?方式通過Request.Form?來訪問提交的內(nèi)容

4军俊、Get?方式傳輸?shù)臄?shù)據(jù)量非常小侥加,一般限制在2 KB?左右,但是執(zhí)行效率卻比Post?方法好粪躬;而Post?方式傳遞的數(shù)據(jù)量相對(duì)較大担败,它是等待服務(wù)器來讀取數(shù)據(jù),不過也有字節(jié)限制镰官,這是為了避免對(duì)服務(wù)器用大量數(shù)據(jù)進(jìn)行惡意攻擊提前,根據(jù)微軟方面的說法,微軟對(duì)用Request.Form()?可接收的最大數(shù)據(jù)有限制朋魔,IIS 4?中為80 KB?字節(jié)岖研,IIS 5?中為100 KB?字節(jié)

5、Get?方式提交數(shù)據(jù),會(huì)帶來安全問題孙援,比如一個(gè)登陸頁面害淤,通過Get?方式提交數(shù)據(jù)時(shí),用戶名和密碼將出現(xiàn)在URL?上拓售,如果頁面可以被緩存或者其他人可以訪問客戶這臺(tái)機(jī)器窥摄,就可以從歷史記錄獲得該用戶的帳號(hào)和密碼,所以表單提交建議使用Post?方法础淤;Post?方法提交的表單頁面常見的問題是崭放,該頁面如果刷新的時(shí)候,會(huì)彈出一個(gè)對(duì)話框

二鸽凶、URL組成

2.1圖解


2.2文字描述

1币砂、請求協(xié)議:

http-普通的http請求;https-加密的http請求玻侥,傳輸數(shù)據(jù)更加安全

?雖然HTTP的請求方式有8種决摧,但是我們在實(shí)際應(yīng)用中常用的也就是get和post,其他請求方式也都可以通過這兩種方式間接的來實(shí)現(xiàn)凑兰。

A掌桩、HTTP協(xié)議中共定義了八種方法或者叫“動(dòng)作”來表明對(duì)Request-URI指定的資源的不同操作方式,具體介紹如下:

B姑食、OPTIONS:返回服務(wù)器針對(duì)特定資源所支持的HTTP請求方法波岛。也可以利用向Web服務(wù)器發(fā)送‘*‘的請求來測試服務(wù)器的功能性。

C

音半、HEAD:向服務(wù)器索要與GET請求相一致的響應(yīng)则拷,只不過響應(yīng)體將不會(huì)被返回。這一方法可以在不必傳輸整個(gè)響應(yīng)內(nèi)容的情況下曹鸠,就可以獲取包含在響應(yīng)消息頭中的元信息隔躲。

D

、GET:向特定的資源發(fā)出請求物延。

E

宣旱、POST:向指定資源提交數(shù)據(jù)進(jìn)行處理請求(例如提交表單或者上傳文件)。數(shù)據(jù)被包含在請求體中叛薯。POST請求可能會(huì)導(dǎo)致新的資源的創(chuàng)建和/或已有資源的修改浑吟。

F

、PUT:向指定資源位置上傳其最新內(nèi)容耗溜。

G

组力、DELETE:請求服務(wù)器刪除Request-URI所標(biāo)識(shí)的資源。

H

抖拴、TRACE:回顯服務(wù)器收到的請求燎字,主要用于測試或診斷腥椒。

I、CONNECT:HTTP/1.1協(xié)議中預(yù)留給能夠?qū)⑦B接改為管道方式的代理服務(wù)器候衍。

2笼蛛、請求IP:就是指提供接口的系統(tǒng)所部署的服務(wù)器地址

3、請求端口:默認(rèn)是80

4蛉鹿、接口地址:指系統(tǒng)提供的接口在什么位置

5滨砍、接口參數(shù):參數(shù)在接口路徑后,用“?”來表示接口地址完了妖异,剩下的都是參數(shù)了惋戏,用“&”來區(qū)分參數(shù)個(gè)數(shù)

三、具體介紹

3.1點(diǎn)擊URL處的Params按鈕他膳,會(huì)打開key-value編輯參數(shù)响逢,此處可以編輯URL


3.2、Headers是HTTP請求和相應(yīng)的核心棕孙,它承載了關(guān)于客戶端瀏覽器龄句,請求頁面,服務(wù)器等相關(guān)的信息散罕。


四、配置環(huán)境變量

我們可能需要在多個(gè)環(huán)境下對(duì)同一個(gè)接口進(jìn)行測試傀蓉。比如我們請求的域名欧漱,開發(fā)、測試葬燎、生產(chǎn)環(huán)境误甚,請求參數(shù)。在地址欄谱净、header窑邦、請求參數(shù)、外部數(shù)據(jù)文件里壕探,用{{變量名}}?獲取環(huán)境變量的值

Postman?

的環(huán)境變量分為environment?和global 2種

4.1手動(dòng)設(shè)置環(huán)境變量

1冈钦、點(diǎn)擊設(shè)置按鈕;選擇Manage Environment


2李请、點(diǎn)擊Add


3瞧筛、填寫變量名和變量值



4.2編寫腳本

1、在【OauthToken接口】在請求參數(shù)處點(diǎn)擊Tests导盅,編輯腳本

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

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


2较幌、在【獲取各字典的最新版本清單接口】請求參數(shù)處,點(diǎn)擊Headers白翻,輸入驗(yàn)證Token乍炉,此處填寫之前提到的{{access_token}},其他接口同此步;接口之間的返回值的調(diào)用岛琼,可參考token調(diào)用方法


4.3斷言

1底循、在每個(gè)接口斷言之前,

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




五衷恭、點(diǎn)擊Runner




六此叠、擴(kuò)展

postman常用方法集合:

//驗(yàn)證本次請求的狀態(tài)碼?

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

tests["檢查返回的數(shù)據(jù)是否有成功執(zhí)行"] = responseBody.has("成功執(zhí)行");

tests["響應(yīng)時(shí)間不超過500ms"] = responseTime <?500;

//先聲明一個(gè)變量jsonData,調(diào)用JSON.parse()方法將responseBody轉(zhuǎn)換成json的標(biāo)準(zhǔn)格式并賦值給變量jsonData,將返回結(jié)果傳給其他接口使用

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

//JSON.parse()方法随珠,把json字符串轉(zhuǎn)化為對(duì)象灭袁。parse()會(huì)進(jìn)行json格式的檢查是一個(gè)安全的函數(shù)。

varjsonData =?JSON.parse(responseBody);

varjsonObject = xml2Json(responseBody);

//檢測errcode字段的值是否為0

tests["errcode is 0"] = jsonData.errcode ===?`0`;

檢測errcode字段的長度是否是1

tests["errcode's length"] = jsonData.errcode.length ===1

tests["description is?成功執(zhí)行"] = jsonData.description ===?'成功執(zhí)行'

tests["description's length"] = jsonData.description.length ===4

//檢測description的數(shù)據(jù)類型是否是String

tests["description?的數(shù)據(jù)類型為String"] = _.isString(jsonData.description)

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

//getResponseHeader()方法會(huì)返回header的值窗看,如果該值存在

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

//判斷字段的類型

varschema = {

?properties:{

?errcode: {type:?'String'},

?description:{type:'String'}

?}

};

tests["響應(yīng)實(shí)體的類型"] = tv4.validate(responseBody, schema);

1.1清除環(huán)境變量

postman.clearEnvironmentVariable("variable_key");

例子:postman.clearEnvironmentVariable("url");

2.

設(shè)置一個(gè)全局變量

postman.setGlobalVariable("key", "value");?

例子:postman.setGlobalVariable("username", "123@qq.com");

使用全局變量格式:{{variableName}}

2.1

清除一個(gè)全局變量

postman.clearGlobalVariable("key", "value");?

例子:postman.clearGlobalVariable("username", "123@qq.com");?

3.

檢查響應(yīng)體包含一個(gè)字符串

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

例子:響應(yīng)體包含以下字段"path": "field is read-only",

tests["Body matches string"] = responseBody.has("field is read-only");?

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

4.

轉(zhuǎn)換XML身體JSON對(duì)象

var jsonObject = xml2Json(responseBody);

例子:

5.

檢查響應(yīng)體等于一個(gè)字符串

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

例子:響應(yīng)體包含以下字段"path": "field is read-only",

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

6.

檢查一個(gè)JSON值

var data = JSON.parse(responseBody);?

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

7.Content-Type

的存在(不區(qū)分大小寫檢查)

tests["Content-Type is present"] = postman.getResponseHeader("Content-Type"); //Note: the getResponseHeader() method returns the header value, if it exists.?

8.Content-Type

的存在(區(qū)分大小寫)

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

9.

響應(yīng)時(shí)間小于200ms的

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

10.

狀態(tài)代碼是200

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

例子:狀態(tài)碼是404

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

11.

代號(hào)包含一個(gè)字符串

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

例子:Status:201 CREATED

tests["Status code is 201"] = responseCode.code === 201;?

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

12.

成功的POST請求的狀態(tài)代碼

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

13.

使用TinyValidator的JSON數(shù)據(jù)

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);

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末茸歧,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子显沈,更是在濱河造成了極大的恐慌软瞎,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拉讯,死亡現(xiàn)場離奇詭異涤浇,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)魔慷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門只锭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人院尔,你說我怎么就攤上這事蜻展。” “怎么了邀摆?”我有些...
    開封第一講書人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵纵顾,是天一觀的道長。 經(jīng)常有香客問我栋盹,道長施逾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任例获,我火速辦了婚禮音念,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘躏敢。我一直安慰自己闷愤,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開白布件余。 她就那樣靜靜地躺著讥脐,像睡著了一般遭居。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上旬渠,一...
    開封第一講書人閱讀 51,679評(píng)論 1 305
  • 那天俱萍,我揣著相機(jī)與錄音,去河邊找鬼告丢。 笑死枪蘑,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的岖免。 我是一名探鬼主播岳颇,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼颅湘!你這毒婦竟也來了话侧?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤闯参,失蹤者是張志新(化名)和其女友劉穎瞻鹏,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鹿寨,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡新博,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了脚草。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赫悄。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖玩讳,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情嚼贡,我是刑警寧澤熏纯,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站粤策,受9級(jí)特大地震影響樟澜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜叮盘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一秩贰、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧柔吼,春花似錦毒费、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽想际。三九已至,卻和暖如春溪厘,著一層夾襖步出監(jiān)牢的瞬間胡本,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來泰國打工畸悬, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留侧甫,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓蹋宦,卻偏偏與公主長得像披粟,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子妆档,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

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