postman作為一款發(fā)送HTTP請求的應(yīng)用工具往堡,在開發(fā)和測試過程中調(diào)試HTTP接口有著很大的作用,這里分享通過postman完成一個(gè)小型項(xiàng)目接口自動化測試的文章。
一肺孵、基本功能介紹
1走敌、下載安裝:可以直接安裝 Chrome瀏覽器的插件或者是下載postman? 客戶端碴倾,使用統(tǒng)一的賬號登陸就能使數(shù)據(jù)同步。
2掉丽、發(fā)送請求:
我們常用GET/POST/DELETE …類型的http請求跌榔,在postman中只需填寫對應(yīng)的填寫URL,HEARDER捶障,BODY等內(nèi)容就可以發(fā)送請求并看到接口請求的結(jié)果僧须。下圖簡單展示一個(gè)接口返回的界面和常用功能:
3、settings—General 設(shè)置postman的系統(tǒng)設(shè)置项炼,例如主題背景快捷鍵等担平。
4示绊、code:我們可以將postman中對接口調(diào)試的結(jié)果直接導(dǎo)出成想要的代碼:
5、關(guān)于參數(shù):
Form-data 傳參? form-data是web表單默認(rèn)的傳輸格式暂论,編輯器允許你通過設(shè)置key-value形式的數(shù)據(jù)來模擬填充表單面褐。你可以在最后的選項(xiàng)中選擇添加文件。
x-www-form-urlencoded傳參? 這個(gè)編碼格式同樣可以通過設(shè)置key-value的方式作為URL的參數(shù)空另。
raw 傳參 一個(gè)raw請求可以包含任何內(nèi)容盆耽。在這里可以設(shè)置我們常用的JSON 和 XML數(shù)據(jù)格式。
binary 傳參 在這里你可以發(fā)送視頻扼菠、音頻摄杂、文本等文件。
查看相應(yīng):
Postman的body標(biāo)簽中有三種查看方式:Pretty循榆、Raw析恢、Preview
Pretty方式,可以讓JSON 和 XML的響應(yīng)內(nèi)容顯示的更美觀規(guī)整秧饮。
顯示最原始的數(shù)據(jù)映挂,可以幫助你判斷是否minified
可以幫你把HTML頁面自動解析顯示出來。
6盗尸、參數(shù)化
對于一條完整的測試數(shù)據(jù)的場景構(gòu)建柑船,我們可以使用{{name}}參數(shù)化來傳遞,比如接口B依賴接口A返回的字段data_1泼各,那么我們使用如下語句進(jìn)行傳遞:
在接口A的Tests腳本中添加:
var rsp=JSON.parse(responseBody);
postman.setEnvironmentVariable("data_1",rsp.data.data_1); //將response返回的data_1存為當(dāng)前環(huán)境變量data_1
在接口B中調(diào)用data_1:
data = {{data_1}}
7鞍时、常用概念
1、同步cookie:可以使用Chrome瀏覽器已經(jīng)登錄的cookie扣蜻,同步瀏覽器的cookie需要安裝另一個(gè)插件Interceptor(攔截機(jī))逆巍。它可以在你發(fā)送請求時(shí)幫你將已經(jīng)存在于瀏覽器的數(shù)據(jù)隨header請求,另外它可以將瀏覽器的請求寫到postman的歷史中(需要開啟“Request Capture”)莽使。
2锐极、集合
集合不單單只有分類和存儲功能,Postman支持一鍵運(yùn)行整個(gè)集合內(nèi)的測試芳肌。
我們可以把一個(gè)請求當(dāng)做一個(gè)Test Case, 那么集合就是一個(gè)Test Suite灵再。
每個(gè)集合都對應(yīng)一個(gè)URL,可以通過Share按鈕獲得你的集合URL亿笤,這個(gè)URL可以用于分享給你的隊(duì)友檬嘀,或者用于Newman執(zhí)行。
Newman是Postman的一個(gè)命令行工具责嚷,可以讓API測試加入到你的持續(xù)集成任務(wù)上。
3掂铐、環(huán)境變量
當(dāng)做API測試時(shí)罕拂,你可能經(jīng)常需要切換不同的設(shè)置揍异。比如,開發(fā)環(huán)境的API設(shè)置爆班、測試環(huán)境和產(chǎn)品環(huán)境的API設(shè)置衷掷,你可能需要在不同的測試環(huán)境下使用不同的配置。為此Postman提供了環(huán)境變量柿菩,這樣你就可以通過修改環(huán)境變量戚嗅,而不需修改請求了。
你可以通過右上角的下拉菜單選擇環(huán)境枢舶,可以通過點(diǎn)擊右側(cè)的小眼睛來查看當(dāng)前環(huán)境變量懦胞。
8、接口自動化測試
首先凉泄,Postman測試沙箱是一個(gè)JavaScript執(zhí)行環(huán)境躏尉,可以通過JS腳本來編寫pre-requist和測試腳本。pre-requist可以用來修改一些默認(rèn)參數(shù)后众。
postman執(zhí)行接口請求分為以下三個(gè)部分:
1胀糜、在發(fā)起請求之前運(yùn)行的Pre-request,預(yù)處理數(shù)據(jù)蒂誉,作用:在發(fā)送請求前編輯請求數(shù)據(jù)教藻,比如用戶名或時(shí)間戳
2、對響應(yīng)后的數(shù)據(jù)運(yùn)行的Test右锨,檢查數(shù)據(jù)并做斷言括堤,作用:對響應(yīng)的數(shù)據(jù)檢查和斷言,例如檢查狀態(tài)碼陡蝇、檢查響應(yīng)串痊臭、驗(yàn)證JSON、檢查header登夫、限制應(yīng)答時(shí)間
3广匙、批量運(yùn)行所有請求的Collection Runner,批量執(zhí)行接口測試
然后恼策,我們選擇需要運(yùn)行的測試集和測試數(shù)據(jù)鸦致,run之后可以看到測試報(bào)告。
最后查看本次的測試報(bào)告涣楷,根據(jù)報(bào)告結(jié)果跟進(jìn)具體問題:
9分唾、Jenkins集成
????????我們知道Jenkins可以用來做持續(xù)集成,需在安裝Jenkins的機(jī)器上同時(shí)安裝Newman 狮斗,并且將我們的測試集的數(shù)據(jù)放在git管理绽乔,在jenkins的Shell腳本命令中指定每次執(zhí)行最新的代碼去run ,就可以實(shí)現(xiàn)最簡單的接口自動化測試碳褒。
1折砸、安裝Newman ,先安裝node.js
brew -v
brew install node
Node -v? 或者 brew list
2看疗、node.js 安裝成功之后? 安裝Newman
npm install -g newma
3、運(yùn)行命令 本地/報(bào)告
?這里我們將需要運(yùn)行的測試集合導(dǎo)出到本地睦授,命名為Hippo.postman_collection
使用Newman 常用的運(yùn)行命令有:
newman -c /Users/aoxiaowen/Desktop/Hippo.postman_collection? ? //其中 -c 后面的參數(shù)為postman_collection文件的本地路徑
newman run --reporters html? /Users/aoxiaowen/Desktop/Hippo.postman_collection --reporter-html-export htmlOutput.html --export-online? ?//選擇測試報(bào)告的格式两芳,指定當(dāng)前運(yùn)行的環(huán)境
newman run /Users/aoxiaowen/Desktop/Hippo.postman_collection.json -e /Users/aoxiaowen/Desktop/Hippo.postman_environment.json --reporters html --reporter-html-export /Users/aoxiaowen/postmanfile/result.html? ?//使用本地json測試數(shù)據(jù)
newman run /Users/aoxiaowen/Downloads/testData.postman_collection -e /Users/aoxiaowen/Downloads/online.postman_environment -g /Users/aoxiaowen/Desktop/test.csv --folder testData --reporters html --reporter-html-export /Users/aoxiaowen/postmanfile/result.html??//使用本地csv測試數(shù)據(jù)
????????這種自動化的測試一般適用于小型的簡單測試,本身的接口collection可以方便于我們?nèi)粘5臏y試收集去枷。