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é)昏兆。