第一部分:基礎(chǔ)篇
postman:4.5.1
1.安裝postman
進(jìn)入postman官網(wǎng),如果是mac系統(tǒng)可以直接點(diǎn)擊mac app安裝
如果是windows的話衅枫,需要在windows下安裝chrome瀏覽器,然后在地址欄輸入chrome://extensions,勾選開發(fā)者模式
然后將下載的postman插件解壓,瀏覽器點(diǎn)擊加載已解壓的擴(kuò)展程序,選擇插件所在目錄就可以了
2.測試第一個(gè)api,以豆瓣開發(fā)者api為例
這個(gè)接口的method為get,postman默認(rèn)為get,在url欄輸入被測接口
在接口文檔中,q與tag其中的一個(gè)是必填項(xiàng),所以這里需要配置參數(shù)曙咽,點(diǎn)擊url右側(cè)的params,并輸入?yún)?shù)
點(diǎn)擊send按鈕發(fā)送請求挑辆,在下面可以看到返回的response,響應(yīng)的狀態(tài)碼例朱,與響應(yīng)時(shí)間
response還可以以不同的方式查看孝情,并且還可以看到cookies,headers信息
每次以不同的參數(shù)或者設(shè)置洒嗤,在左側(cè)history都會(huì)幫我們記錄一個(gè)接口測試歷史箫荡,以便于下次重新調(diào)用
第二部分:進(jìn)階篇
1.使用自帶的腳本對接口進(jìn)行測試
點(diǎn)擊tests按鈕,可以看到右側(cè)有個(gè)snippets欄渔隶,里面就是postman內(nèi)置的測試腳本羔挡,輔助對接口進(jìn)行測試
選擇其中的一個(gè)腳本,修改其中的參數(shù)间唉,再次點(diǎn)擊send绞灼,這時(shí)response的tests出現(xiàn)了一個(gè)1/1,說明執(zhí)行一個(gè)測試并且通過測試呈野,綠色pass說明驗(yàn)證通過
紅色fail說明測試不通過低矮,一個(gè)接口可以寫多個(gè)腳本進(jìn)行多次測試
2.內(nèi)置腳本說明
1. 清除一個(gè)全局變量
Clear a global variable
對應(yīng)腳本:
postman.clearGlobalVariable("variable_key");
參數(shù):需要清除的變量的key
2.清除一個(gè)環(huán)境變量
Clear an environment variable
對應(yīng)腳本:
postman.clearEnvironmentVariable("variable_key");
參數(shù):需要清除的環(huán)境變量的key
3.response包含內(nèi)容
Response body:Contains string
對應(yīng)腳本:
tests["Body matches string"] =responseBody.has("string_you_want_to_search");
參數(shù):預(yù)期內(nèi)容
4.將xml格式的response轉(zhuǎn)換成son格式
Response body:Convert XML body to a JSON Object
對應(yīng)腳本:
var jsonObject = xml2Json(responseBody);
參數(shù):(默認(rèn)不需要設(shè)置參數(shù),為接口的response)需要轉(zhuǎn)換的xml
5.response等于預(yù)期內(nèi)容
Response body:Is equal to a string
對應(yīng)腳本:
tests["Body is correct"] = responseBody === "response_body_string";
參數(shù):預(yù)期response
6.json解析key的值進(jìn)行校驗(yàn)
Response body:JSON value check
對應(yīng)腳本:
tests["Args key contains argument passed as url parameter"] = 'test' in responseJSON.args
參數(shù):test替換被測的值,args替換被測的key
7.檢查response的header信息是否有被測字段
Response headers:Content-Type header check
對應(yīng)腳本:
tests["Content-Type is present"] = postman.getResponseHeader("Content-Type");
參數(shù):預(yù)期header
8.響應(yīng)時(shí)間判斷
Response time is less than 200ms
對應(yīng)腳本:
tests["Response time is less than 200ms"] = responseTime < 200;
參數(shù):響應(yīng)時(shí)間
9.設(shè)置全局變量
Set an global variable
對應(yīng)腳本:
postman.setGlobalVariable("variable_key", "variable_value");
參數(shù):全局變量的鍵值
10.設(shè)置環(huán)境變量
Set an environment variable
對應(yīng)腳本:
postman.setEnvironmentVariable("variable_key", "variable_value");
參數(shù):環(huán)境變量的鍵值
11.判斷狀態(tài)碼
Status code:Code is 200
對應(yīng)腳本:
tests["Status code is 200"] = responseCode.code != 400;
參數(shù):狀態(tài)碼
12.檢查code name 是否包含內(nèi)容
Status code:Code name has string
對應(yīng)腳本:
tests["Status code name has string"] = responseCode.name.has("Created");
參數(shù):預(yù)期code name包含字符串
13.成功的post請求
Status code:Successful POST request
對應(yīng)腳本:
tests["Successful POST request"] = responseCode.code === 201 || responseCode.code === 202;
14.微小驗(yàn)證器
Use Tiny Validator for JSON data
對應(yīng)腳本:
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);
參數(shù):可以修改items里面的鍵值對來對應(yīng)驗(yàn)證json的參數(shù)
3.保存api,點(diǎn)擊save按鈕被冒,找到save as按鈕军掂,點(diǎn)擊
這時(shí)我們可以修改request name 也可以寫一下請求的描述
接下來新建一個(gè)接口集合,寫一個(gè)集合的名字,點(diǎn)擊保存
然后在左側(cè)功能區(qū)昨悼,找到collections欄目并點(diǎn)擊
可以看到剛保存的api集合
4.運(yùn)行api集合:找到頂層功能區(qū)蝗锥,找到runner按鍵,并點(diǎn)擊
選中剛才新建的api集合
點(diǎn)擊start test,可以在右側(cè)看到運(yùn)行的結(jié)果
5.命令行運(yùn)行接口集合:首先下載剛才創(chuàng)建的集合率触,點(diǎn)擊export,并保存到指定路徑
安裝postman命令行運(yùn)行工具newman
注:如果提示沒有npm命令點(diǎn)擊此鏈接
安裝好newman后终议,命令行執(zhí)行,可以看到執(zhí)行結(jié)果
如果想要報(bào)告加上 -H filename 參數(shù)即可
第三部分:高級(jí)篇
1.環(huán)境變量的使用:在測試的過程中我們可能有多套測試環(huán)境,對應(yīng)每一套測試環(huán)境的ip可能是不同的闲延,但是接口的請求痊剖,與參數(shù)又是一樣的,最笨的方法是每一個(gè)環(huán)境都寫一個(gè)測試集合垒玲,但是postman給我們提供了更為便捷的方法:使用環(huán)境變量
進(jìn)入請求欄目,找到no environment
點(diǎn)擊no environment,找到manager environments,點(diǎn)擊進(jìn)入頁面
![Uploading QQ20160812-2_610634.png . . .]
這個(gè)頁面可以進(jìn)行管理環(huán)境變量找颓,點(diǎn)擊add,添加一個(gè)環(huán)境變量
在這里輸入環(huán)境變量的名字合愈,環(huán)境變量是以鍵值對的形式存在的,輸入環(huán)境變量的鍵值對击狮,然后點(diǎn)擊add,進(jìn)行保存
回到請求測試區(qū)佛析,點(diǎn)擊no environment ,選擇剛才新建立的環(huán)境變量,同時(shí)可以點(diǎn)擊右側(cè)的眼睛來查看環(huán)境變量與全局變量(后面會(huì)給大家介紹)
現(xiàn)在使用剛才新建的環(huán)境變量來替換uri彪蓬,引用變量使用{{key}}的形式寸莫,將https://echo.getpostman.com用{{test_env}}來替換,并send發(fā)送請求
可以看到這里的結(jié)果和使用https://echo.getpostman.com是一樣的档冬,這樣一組接口就可以實(shí)現(xiàn)寫一次而通過更換環(huán)境變量來實(shí)現(xiàn)切換不同的環(huán)境
2.全局變量的使用:雖然我們可能有多個(gè)測試環(huán)境膘茎,但是我們的測試數(shù)據(jù)每個(gè)環(huán)境用的都是一組桃纯,對于postman相當(dāng)于只有一組全局變量,對應(yīng)多組環(huán)境變量
同樣的披坏,點(diǎn)擊manager environment
點(diǎn)擊globals态坦,進(jìn)入環(huán)境變量的管理頁面
全局變量globals同樣是以鍵值對的形式保存的,輸入鍵值對棒拂,點(diǎn)擊save
回到請求測試區(qū)伞梯,使用全局變量替換url的參數(shù),引用方法與環(huán)境變量的引用方法一致,替換后點(diǎn)擊send,查看結(jié)果
response依然以正確的內(nèi)容顯示出來
3.可以使用pre-request script功能來創(chuàng)建環(huán)境變量與全局變量帚屉,還有銷毀環(huán)境變量與全局變量,pre-request script是預(yù)置的腳本谜诫,執(zhí)行在請求之前
點(diǎn)擊pre-request script,進(jìn)入預(yù)設(shè)腳本頁面
點(diǎn)擊右側(cè)的腳本攻旦,并設(shè)置全局變量與環(huán)境變量,并將url進(jìn)行替換猜绣,點(diǎn)擊send發(fā)送,看到結(jié)果還是以正確的形式進(jìn)行展示
同樣的我們也可以在tests里面使用預(yù)置的腳本進(jìn)行設(shè)置與清除環(huán)境變量用法一樣
4.環(huán)境變量與全局變量都已經(jīng)進(jìn)行了設(shè)置敬特,我們還可以在tests里面進(jìn)行引用掰邢,這樣就解決了上下游數(shù)據(jù)互傳的問題了了
點(diǎn)擊tests,切換到測試腳本頁面,輸入腳本
結(jié)束語:postman還有很多很強(qiáng)大的功能,這里只是拋磚引玉伟阔,讓大家對postman有比較深刻的了解