一扎运、postman概述
1.1定義
1出吹、postman:一款功能強(qiáng)大的網(wǎng)頁(yè)調(diào)試與發(fā)送網(wǎng)頁(yè)HTTP請(qǐng)求的工具有缆。
2晾剖、測(cè)試集合collection:collection可以看作是request的集合兰珍,也可以看作是testsuite侍郭,對(duì)接口測(cè)試進(jìn)行歸類,支持導(dǎo)入/導(dǎo)出掠河。
3亮元、測(cè)試沙箱:可以使用JS編寫(xiě)測(cè)試腳本募书,對(duì)request結(jié)果添加測(cè)試斷言等蝴猪。
4祟滴、環(huán)境與變量:支持設(shè)置運(yùn)行的環(huán)境與該環(huán)境下的一些變量窃判,也支持設(shè)置一些和環(huán)境無(wú)光的變量涣脚。
1.2下載與安裝
1炒考、下載地址:https://www.getpostman.com/downloads/
2鬓照、支持系統(tǒng):Mac全跨、Windows藕赞、Linux
3成肘、安裝步驟:雙擊EXE文件根據(jù)安裝提示進(jìn)行即可完成安裝。
二斧蜕、postman使用詳解
2.1?postman功能區(qū)域
postman主界面分為7個(gè)功能區(qū)域双霍,分別為:工具欄、快速功能圖標(biāo)區(qū)域惩激、快速檢索店煞、測(cè)試項(xiàng)目或測(cè)試集管理區(qū)域、環(huán)境變量配置與設(shè)置區(qū)域风钻、請(qǐng)求配置區(qū)域顷蟀、響應(yīng)展示區(qū)域。如下圖所示:
2.2 Request四要素
1骡技、URL:
請(qǐng)求的地址鸣个,如果有參數(shù)會(huì)自動(dòng)解析顯示在params中羞反,如果手動(dòng)在params中添加參數(shù),也會(huì)自動(dòng)補(bǔ)充到URL中囤萤;
2昼窗、Method:
幾乎支持所有的method:GET、POST涛舍、PUT澄惊、PATCH、DELETE富雅、COPY......
3掸驱、Headers:
可以隨便添加、編輯header attribute没佑,打出首字母時(shí)毕贼,會(huì)很貼心的在下拉菜單中顯示標(biāo)準(zhǔn)的attribute;
4蛤奢、Request Body:
(1)form-data:可以上傳一個(gè)文件作為key的value提交鬼癣,key—value不寫(xiě)入U(xiǎn)RL,而直接提交啤贩;
(2)x-www-form-urlencoded:key—value會(huì)寫(xiě)入U(xiǎn)RL
(3)Raw:可以包含任何東西待秃,都會(huì)隨時(shí)請(qǐng)求發(fā)送;
(4)Binary:image瓜晤、audio锥余、video、text files痢掠;
2.3?Response介紹
1驱犹、Body、Cookie足画、Header雄驹、Test四個(gè)模塊;
2淹辞、可復(fù)制医舆、保存、搜索response象缀;
3蔬将、Body提供三種視圖查看:
(1)Pretty:格式化后顯示,方便查看央星;
(2)Raw:最原始數(shù)據(jù)霞怀,即text格式;
(3)Preview:自動(dòng)解析HTML頁(yè)面并顯示莉给;
4毙石、status廉沮、time、size單獨(dú)顯示在旁邊徐矩,鼠標(biāo)懸浮可查看詳情滞时。
2.4環(huán)境與變量
1、當(dāng)測(cè)試存在多個(gè)環(huán)境時(shí)滤灯,可以先設(shè)置一個(gè)環(huán)境坪稽,然后在此環(huán)境下設(shè)置一系列變量。
2力喷、也可單獨(dú)設(shè)置一系列變量刽漂,不選擇環(huán)境(默認(rèn)環(huán)境)時(shí),這些變量生效弟孟,選擇環(huán)境后,環(huán)境變量覆蓋這些變量样悟。
3拂募、變量的格式為:{{XXX}}
4、環(huán)境與全局變量
(1)postman.setEnvironmentVariable(variableName, variableValue)
設(shè)置一個(gè)環(huán)境變量“variableName”窟她,并為其分配字符串“variableValue”陈症。您必須為此方法選擇一個(gè)環(huán)境才能工作。
注意:只能存儲(chǔ)字符串震糖。存儲(chǔ)其他類型的數(shù)據(jù)將導(dǎo)致意外的行為录肯。
(2)postman.getEnvironmentVariable(variableName)
返回環(huán)境變量“variableName”的值,用于預(yù)請(qǐng)求和測(cè)試腳本吊说。您必須為此方法選擇一個(gè)環(huán)境才能工作论咏。
(3)postman.setGlobalVariable(variableName, variableValue)
設(shè)置一個(gè)全局變量“variableName”,并為其分配字符串“variableValue”颁井。
?注意:只能存儲(chǔ)字符串厅贪。存儲(chǔ)其他類型的數(shù)據(jù)將導(dǎo)致意外的行為。
(4)postman.getGlobalVariable(variableName)
返回全局變量“variableName”的值雅宾,用于預(yù)請(qǐng)求和測(cè)試腳本养涮。
(5)postman.clearEnvironmentVariable(variableName)
清除名為“variableName”的環(huán)境變量。您必須為此方法選擇一個(gè)環(huán)境才能工作眉抬。
(6)postman.clearGlobalVariable(variableName)
清除名為“variableName”的全局變量贯吓。
(7)postman.clearEnvironmentVariables()
清除所有環(huán)境變量。您必須為此方法選擇一個(gè)環(huán)境才能工作蜀变。
(8)postman.clearGlobalVariables()
清除所有全局變量悄谐。
(9)Environment
當(dāng)前環(huán)境中的變量字典。使用environment["foo"]訪問(wèn)“foo”的環(huán)境變量的值昏苏。
注意:這只能用來(lái)讀取變量尊沸。使用setEnvironmentVariable()設(shè)置值威沫。
(10)Globals
全球變量字典使用globals["bar"]訪問(wèn)“欄中的”全局變量的值。
注意:這只能用來(lái)讀取變量洼专。使用setGlobalVariable()設(shè)置值
2.5測(cè)試沙箱
2.5.1測(cè)試沙箱描述
Postman測(cè)試沙箱:是一個(gè)JavaScript執(zhí)行環(huán)境棒掠,可以通過(guò)JS腳本來(lái)編寫(xiě)pre-requist和測(cè)試腳本。
1屁商、Pre-request script:可以修改或設(shè)置一些默認(rèn)參數(shù)烟很,在request之前執(zhí)行;
2蜡镶、Tests使用語(yǔ)言Java script雾袱,用來(lái)建議response是否滿足要求;
3官还、由描述性的Key和布爾型結(jié)果組成芹橡,可以理解為斷言,并且可以創(chuàng)建多個(gè)Key望伦;
4林说、Snippets:可以助你快速添加代碼,其他代碼可參考官方文檔屯伞;
2.5.2 測(cè)試斷言
Postman斷言:在請(qǐng)求返回之后腿箩,運(yùn)行,并根據(jù)斷言的pass\fail情況體現(xiàn)在最終測(cè)試結(jié)果中劣摇。
1珠移、校驗(yàn)返回狀態(tài)是否正確:
pm.test("Status code is 200", function () {
????pm.response.to.have.status(200);
});
2、校驗(yàn)請(qǐng)求響應(yīng)時(shí)間是否低于某個(gè)值:
pm.test("Response time is less than 200ms", function () {
????pm.expect(pm.response.responseTime).to.be.below(200);
});
3末融、校驗(yàn)?zāi)硞€(gè)字段的返回值是否等于指定的值:
pm.test("Your test name", function () {
????var jsonData = pm.response.json();
????pm.expect(jsonData.value).to.eql(100);
});
或
pm.test("Your test name", function () {
????var jsonData = pm.response.json();
????console.log(jsonData.data);
????console.log(jsonData.data[0]);
????console.log(jsonData.data[0].value);
????pm.expect(jsonData.data[0].value).to.eql(100);
});
4钧惧、校驗(yàn)?zāi)硞€(gè)字段的返回值中是否包含指定的值:
pm.test("Your test name", function () {
????var jsonData = pm.response.json();
????pm.expect(jsonData.value).to.include(100);
});
5、用for循環(huán)的方式校驗(yàn)一組數(shù)據(jù)中某個(gè)字段的返回值是否等于指定的值滑潘,并打印出返回值:
pm.test("Your test name", function () {
????var jsonData = pm.response.json();
????for(var i=0;i<1;i++){
????}
????pm.expect(jsonData.value).to.eql(100);
});
2.6 Postman Console
1垢乙、定義:postman在腳本使用變量時(shí),通過(guò)console控制臺(tái)语卤,查看接口測(cè)試log追逮。
2、操作步驟:
(1)Menu --> View ---> Show Postman Console粹舵,打開(kāi)Postman Console的頁(yè)面钮孵;
(2)在Request中的Pre-request Script或者Tests里插入腳本console.log("variables")。當(dāng)你發(fā)送請(qǐng)求時(shí)眼滤,此腳本將會(huì)執(zhí)行巴席,將參數(shù)對(duì)應(yīng)的值打印到Postman Console中;
(3)查看運(yùn)行當(dāng)前接口在Console中打印的記錄诅需。
2.7多接口測(cè)試管理
2.7.1 collection描述
1漾唉、如果每個(gè)request看作是testcase荧库,那么collection就是testsuite;
2赵刑、collection可以一鍵運(yùn)行所有的request分衫;
3、collection可以使用csv或者json文件導(dǎo)入變量般此,官網(wǎng)提供模板文件蚪战;
4、引用變量語(yǔ)法有2個(gè):data.username ?或者data.['username']