Lesson1 Postman安裝與基本使用
postman工作原理:
Postman下載安裝:
發(fā)起第一個接口請求:
我們使用的是這個網(wǎng)站給我們提供的一個查詢天氣的接口。
拿到一個接口以后www.tianqiapi.com,首先要獲取一下接口信息,那么就需要去看一下接口文檔踱蠢。
[if !vml]
[endif]
get:http請求方法鞋诗,后面是跟著的url。
在postman中選擇好請求方法阵谚,將url粘貼過來钞翔。
然后查看參數(shù)內(nèi)容严卖,在參數(shù)中,找到必填參數(shù)布轿,填寫到params中哮笆。
填寫好之后就可以進行send来颤,返回的信息就是這個接口發(fā)送請求給服務(wù)器,服務(wù)器返回回來的內(nèi)容稠肘。
除了必填的參數(shù)福铅,還有一些非必填的參數(shù),也可以有選擇性的進行填寫项阴。
Lesson2 Get請求實戰(zhàn)一接口測試流程
Get與Post區(qū)別:
[if !supportLists]1.??? [endif]Get比Post更不安全滑黔,因為參數(shù)直接暴露在url上, 所以不能用來傳遞敏感信息环揽。
[if !supportLists]2.??? [endif]Get參數(shù)通過url傳遞略荡,Post放在Request Body中。
詳解:
3. 場景:連接wlan薯演,需要登錄之后才能進行上網(wǎng)撞芍,但是認(rèn)證頁面打開非常慢秧了,如果打開頁面中的廣告再打開認(rèn)證頁面就會變得很快跨扮。→get比post要快
[if !supportLists]4.??? [endif]場景:用貨車?yán)貉檎保瑢⒚悍旁谪涇図斏蟝et衡创;用貨車?yán)海瑢⒚悍旁谪涇嚴(yán)锩鎝ost晶通。
????????? 但是若運輸?shù)氖瞧土猓筒荒芊旁陧斏狭耍荒苁褂胮ost狮辽∫灰玻→post更安全,并且攜帶敏感信息喉脖∫叮→但是get同樣可以將貨物放在里面,post同樣可以將貨物放在上面树叽。
5. get只有一個數(shù)據(jù)包舆蝴,post有兩個數(shù)據(jù)包。get是將header和數(shù)據(jù)一起發(fā)過來题诵,post是先發(fā)一次header洁仗,再發(fā)一次數(shù)據(jù)。
接口測試一般在功能測試之前性锭,開展集成測試的時候就開始了赠潦。
拿到接口文檔后,就可以針對文檔中要驗證的內(nèi)容進行用例設(shè)計草冈,調(diào)用接口進行驗證就可以了祭椰。
實例:百度進行ip地址的搜索臭家,輸入一個ip地址,點擊查詢進行查詢方淤。
1.獲取接口信息:
檢查進行抓包钉赁,抓到這個請求的url,填入postman進行接口請求携茂。
2.接口測試用例設(shè)計:
一般是針對postman中的參數(shù)進行用例編寫你踩。
更改某個參數(shù)或者去掉某個參數(shù),進行send傳值讳苦。還可以利用這個查詢別人的url中哪些參數(shù)是必填的带膜。
3.4.通過postman就可以完成。
設(shè)置請求頭域鸳谜,根據(jù)接口文檔填寫
接口響應(yīng):檢查network中的response膝藕,和從postman拿到的內(nèi)容是一樣的
驗證body內(nèi)容,檢查cookie是否正確咐扭。
請求需要關(guān)注的:請求方法芭挽,url,頭域信息(referer表示url的來源信息)蝗肪,請求參數(shù)
響應(yīng)需要關(guān)注的:響應(yīng)碼袜爪,響應(yīng)頭,響應(yīng)正文
Lesson3 Get請求實戰(zhàn)二頭域操作
url地址薛闪,http操作方法辛馆,請求頭域,請求操作
有些接口進行測試時豁延,必須設(shè)置頭域昙篙。
抓到的接口,XHR:XMLRequest
referer頭域一般指明這個請求的來源诱咏,是從哪來的苔可,加上referer防止倒鏈,爬蟲胰苏。
如果填寫好了url發(fā)送硕蛹,返回有錯誤的話,那么可以檢查頭域是否缺少了需要填的信息硕并。找到接口文檔法焰,查看這個接口必填信息有哪些。也可以通過抓包查看頭域倔毙,嘗試看下哪個參數(shù)是必填的埃仪。
Lesson4 Post請求實戰(zhàn)-文件上傳與json請求
一般情況下,很多登錄請求都是post請求陕赃。
post請求除了要填寫url卵蛉,自動生成參數(shù)颁股,還需要填寫body。
這時需要特別注意請求參數(shù)在body中的格式以及headers中的Content-Type中要填寫的東西傻丝。
X-www-form-urlencoded:
一個登陸接口:
[if !vml]
[endif]
這個登陸接口在“檢查”時不會在response中展示返回信息甘有,只會登陸成功,使用postman可以看到返回信息葡缰,message使用Unicode轉(zhuǎn)碼查看亏掀。
form-data:
一個上傳文件的接口:
在body的填寫中,選擇form-data泛释,需要選擇file選項滤愕,進行本地圖片的上傳。
Form-data中怜校,file為二進制binary圖片格式间影,其他還有很多別的信息,因為我們在上傳圖片時茄茁,只選擇了圖片魂贬,所以在body的填寫中,添加圖片名稱即可胰丁。
如果在body中選擇form-data了随橘,那么在headers中content-type喂分,就會默認(rèn)選擇multipart/form-data锦庸。
[if !vml]
[endif]
如果選擇raw,一般在text選項中和www蒲祈、或者form-data是一樣的甘萧。可以進行content-type的編輯梆掸,直接按照請求體的格式進行發(fā)送扬卷。
例子:
申請用友云新發(fā)證券查詢接口:https://api.yonyoucloud.com/apilink/tempServicePages/b1277b7e-b1e3-445c-818a-cdcd457f298c_true.html
購買之后,就可以利用這個接口進行測試酸钦,用友云新發(fā)證券查詢接口:
接口文檔中有headers的設(shè)置怪得,和一些參數(shù)的設(shè)置。參數(shù)不是必填的卑硫,就可以先不填就進行一次請求徒恋,看一下結(jié)果是啥。
請求的結(jié)果是成功的欢伏。
[if !vml]
[endif]
參數(shù)的設(shè)置是請求體body的內(nèi)容入挣,所以body中選擇x-www,在header中會自動加上content-type為x-www硝拧,然后再加上請求參數(shù)中的設(shè)置径筏。
我們在body中加上一個size參數(shù)葛假,將其設(shè)置為5,那么發(fā)送接口后滋恬,只展示五條聊训。
其實在選擇x-www時,再加上body恢氯,相當(dāng)于在url后面直接加上了魔眨?size=5,但是現(xiàn)在在url中不展示酿雪,我們可以手動加上遏暴?size=5,再請求一次指黎,看結(jié)果是否一致朋凉。
https://api.yonyoucloud.com/apis/pte/New_Issue_Bond_Information/New_Issue_Bond_Information?size=5
通過content-type中進行判斷,在request headers中醋安,content-type如果是application/json杂彭,那么在post請求的body中選擇raw-json,將請求體輸入其中吓揪,發(fā)包就可以了亲怠。
Lesson5 環(huán)境變量與全局變量
進行參數(shù)設(shè)置,如何對接口返回信息進行校驗柠辞。
環(huán)境變量(add):
設(shè)置一組變量团秽,在某一個環(huán)境中進行使用。
全局變量(Global):
設(shè)置單個變量叭首,可以跨接口使用习勤。
全局變量(Global):
我們在使用天氣的api時,輸入城市名進行發(fā)包焙格,就可以獲取到這個城市的天氣情況图毕。
現(xiàn)在我們想將其保存為一個接口,不需要每次修改url眷唉,只要輸入城市予颤,就可以查詢。
在city參數(shù)中輸入{{冬阳,會展示幾個設(shè)置好的隨機數(shù)蛤虐,前面帶上G,G代表Global摩泪,全局變量笆焰。可以根據(jù)本身的英文來判斷意思见坑,比如嚷掠,guid捏检,randomID,randomPhoneNumber等等不皆。
我們這里需要自己配置的話贯城,就設(shè)置一個自己想要的名字,比如這里設(shè)置成霹娄,{{cityname}}能犯,但是此時這個變量還沒有進行設(shè)置。
我們在這里設(shè)置一個全局變量犬耻,命名為cityname踩晶,默認(rèn)值就隨便設(shè)置一個城市,保存好這個全局變量之后枕磁,再到postman中查看這個接口的變量時渡蜻,就可以看到在cityname上有了一個G的標(biāo)識,代表現(xiàn)在這個變量已經(jīng)是個全局變量了计济,進行一次發(fā)包茸苇,得到的結(jié)果就是默認(rèn)情況下海口的天氣沦寂。
環(huán)境變量(add):
比如在百度查詢ip接口設(shè)置環(huán)境變量学密,
[if !vml]
[endif]
命好名字后,就能在環(huán)境變量中看到自己命名的一組變量传藏。
點擊進入腻暮,可以添加其他的變量,同時保存在這一組環(huán)境變量中漩氨。
設(shè)置好了環(huán)境變量西壮,必須在右上角選擇響應(yīng)對應(yīng)環(huán)境遗增,在輸入{{時才可以展示出自己設(shè)置好的這組變量叫惊,不然就只展示全局變量。
但是如果在右上角選擇了環(huán)境變量做修,在輸入欄寫入全局變量時霍狰,取值仍是環(huán)境變量,也就是說環(huán)境變量的優(yōu)先級大于全局變量(overdriven)饰及。
小眼睛快讀:
?Lesson6 測試沙箱與測試斷言
發(fā)送請求之后蔗坯,對返回信息進行校驗的過程,就是斷言燎含,驗證返回結(jié)果是否符合預(yù)期宾濒。
Postman測試沙箱其實是結(jié)合JS腳本以及自己封裝的一些功能,完成測試中的功能屏箍,在請求發(fā)起前后實現(xiàn)部分測試操作绘梦。
Pre-request:
在發(fā)起請求之前橘忱,
var表示variable,表示用一個變量city來接收從環(huán)境變量中得到的這個信息
使用postman自帶的控制臺console卸奉,將變量輸出到postman中的控制臺上钝诚,在控制臺上就可以看到這一次請求的請求和返回。
在進行接口測試之前榄棵,要選擇相應(yīng)的環(huán)境凝颇。
使用Tests自動進行接口的斷言:
Tests是得到了返回信息之后才進行操作的,一般使用的是send a request之后的這些疹鳄。
比如:
[if !supportLists]1.??? [endif]狀態(tài)碼200
可以利用這個模板進行校驗拧略,function()就是我們要進行的斷言。
[if !supportLists]2.?????? [endif]使用返回體模板瘪弓,返回體中包含某個string字段
這里的文本中格式必須是raw的格式辑鲤,沒有經(jīng)過轉(zhuǎn)譯的Unicode,例如\ “”等符號杠茬,前面去添加\月褥,防止被當(dāng)成JS中的特殊字符。
[if !supportLists]3.??? [endif]驗證某個字段中是否包含某個文本信息瓢喉,json文本
需要將jsonData換成我們需要校驗的變量宁赤,eql換成預(yù)期的結(jié)果,注意這里要加雙引號栓票。
舉例:
百度ip查詢接口:
[if !supportLists]1.??? [endif]寫tests之前先看一下正確返回的信息决左,分析一下json的格式
如果要驗證status,它是在json第一層級里走贪;
如果驗證location佛猛,它是在data[]中,并且在[]的第一層級中坠狡。
我們校驗兩個继找,使用console進行調(diào)試:
針對有多層數(shù)據(jù)的,我們一層一層進行校驗逃沿,“”+是注釋婴渡。
如果想其中加上循環(huán),我們也可以書寫一個循環(huán)加入凯亮,但是要調(diào)節(jié)其中的變量
Lesson7 多接口測試管理-測試集與數(shù)據(jù)驅(qū)動
多接口管理:
點擊小三角打開run边臼,或者直接點擊runner,就可以運行我們的測試集假消。
需要注意柠并,如果這個collection的接口是在不同環(huán)境中運行的,那么需要將這幾個環(huán)境中的變量放置在一個環(huán)境中,再進行運行臼予。
執(zhí)行之前需要選擇的就是環(huán)境(Environment)亿傅、次數(shù)(Iteration)、每次完成后需要等待多久(Delay)再進行下一次接口請求瘟栖、是否記錄所有請求的日志(Log Responses)葵擎。
點擊某個接口就可以看到具體日志,請求返回信息等半哟。
我們想利用自己創(chuàng)建的文件去一條一條執(zhí)行用例酬滤,那么
Pm.expect(jsonData.value).to.eql(data.cityname)
這句話的意思是我們期望jsonData.value等于data.cityname。
jsonData是我們返回體json中的數(shù)據(jù)寓涨,用.連接我們想得到的數(shù)據(jù)盯串,data.cityname是我們數(shù)據(jù)文件中的數(shù)據(jù),用.表示數(shù)據(jù)文件中具體的某個字段戒良,即用例文件中的變量名稱体捏。
postman中,文件導(dǎo)入支持的是json和CSV兩種格式糯崎,我們將Excel文件轉(zhuǎn)換成CSV文件几缭,再在postman中進行導(dǎo)入。
上傳好CSV文件后沃呢,先點擊preview看下是都是亂碼年栓,此時表示文件的編碼格式不正確,利用ue將編碼格式換成utf-8無bom薄霜,就可以看到了某抓。
運行中出錯的地方:
[if !supportLists]1.??? [endif]一定要保證畫框的地方寫的變量是正確的,并且和我們數(shù)據(jù)文件中的變量名稱保證為完全一樣惰瓜。
[if !supportLists]2.?????? [endif]數(shù)據(jù)文件一定要是CSV文件否副,并且首先要預(yù)覽一下不是亂碼
[if !supportLists]3.?????? [endif]必填的參數(shù),如果在用例文件中沒有涉及崎坊,一定要改成固定的值备禀,不然接口會嘗試去調(diào)用數(shù)據(jù)文件中對應(yīng)變量名稱的變量,找不到從而報錯流强。
Lesson8 電商網(wǎng)站cookie操作
通過抓包痹届,抓到登陸查看購物車的接口,我們查看到購物車中有一個“零食大禮包”打月。
得到一個接口后,首先查看四要素蚕捉,url地址奏篙,請求方式,請求參數(shù),頭域秘通。
我們將所有參數(shù)填入为严,此時在頭域中不攜帶cookie,購物車中是沒有任何商品的肺稀。
[if !vml]
[endif]
[if !vml]
[endif]
這時雖然產(chǎn)生了cookie第股,但是沒有攜帶信息。
向cookie中添加信息:
[if !supportLists]1.??? [endif]直接在抓包過程中话原,抓到登陸時攜帶的cookie夕吻,填入請求頭域中
[if !supportLists]2.??? [endif]手動添加
[if !vml]
[endif]
先將請求的域名填入,再增加cookie繁仁,增加cookie的時候一般只要拿到sessionID就可以了涉馅,這就要比我們直接在抓包過程中抓到的所有cookie填入要便捷。
斷言:注意前后置順序
[if !vml]
[endif]
[if !vml]
[endif]
[if !vml]
[endif]