1.背景介紹
當開發(fā)人員需要調(diào)試一個網(wǎng)頁是否運行正常,并不是簡簡單單地調(diào)試網(wǎng)頁的HTML增蹭、CSS滴某、腳本等信息是否運行正常,更加重要的是網(wǎng)頁能夠正確是處理各種HTTP請求滋迈,畢竟網(wǎng)頁的HTTP請求是網(wǎng)站與用戶之間進行交互的非常重要的一種方式霎奢,在動態(tài)網(wǎng)站中,用戶的大部分數(shù)據(jù)都需要通過HTTP請求來與服務(wù)器進行交互饼灿。Postman插件就充當著這種交互方式的“橋梁”幕侠。
2.知識剖析
Postman 是一個非常棒的Chrome擴展,提供功能強大的API & HTTP 請求調(diào)試碍彭。
它能夠發(fā)送任何類型的HTTP requests (GET, HEAD, POST, PUT..)晤硕,附帶任何數(shù)量的參數(shù)+ headers;
支持不同的認證機制(basic, digest, OAuth),接收到的響應(yīng)語法高亮(HTML庇忌,JSON或XML);
Postman 能夠保留了歷史的請求舞箍,這樣我們就可以很容易地重新發(fā)送請求,有一個“集合”功能皆疹,用于存儲所有請求相同的API/域创译。
1.下載安裝postman,postman安裝方法教程
2.有時需要在不同的環(huán)境下跑相同的測試,此時可以通過設(shè)置環(huán)境變量來動態(tài)選擇墙基。點擊右上角的設(shè)置按鈕:Manage Environments,填寫該環(huán)境的名稱:如測試環(huán)境软族,并在key和value中填寫需要的鍵值,創(chuàng)建好所有環(huán)境后,在右上角下拉列表選擇需要的環(huán)境就好
postman界面介紹:
1残制、postman調(diào)試的歷史記錄立砸,保留了每次測試時的請求參數(shù);
2初茶、在Postman中颗祝,Collection類似文件夾,可以把同一個項目的請求放在一個Collection里方便管理和分享恼布,Collection里面也可以再建文件夾螺戳;
3、設(shè)置environment variables(環(huán)境變量)和global variables(全局變量)折汞,點擊右邊的眼睛可以快速查看當前的變量倔幼;
4、選擇HTTP 請求類型的地方爽待,各種常見的不常見的非常全损同;
5、請求URL鸟款,兩層大括號表示這是一個環(huán)境變量膏燃,可以在3的位置選擇當前的environment,環(huán)境變量就會被替換成該environment里variable的值何什;
6组哩、點擊可以設(shè)置URL參數(shù)的key和value;
7处渣、點擊發(fā)送請求伶贰;
8、點擊保存請求到Collection霍比,如果要另存為的話幕袱,可以點擊右邊的下箭頭;
9悠瞬、設(shè)置鑒權(quán)參數(shù)们豌,可以用OAuth之類的;
10浅妆、自定義HTTP Header望迎;
11、設(shè)置Request body凌外;
12辩尊、顯示發(fā)起請求之前執(zhí)行的腳本;
13康辑、在收到response之后執(zhí)行的測試摄欲;
14轿亮、返回數(shù)據(jù)的格式,Pretty可以看到格式化后的JSON胸墙,Raw就是未經(jīng)處理的數(shù)據(jù)我注,Preview可以預(yù)覽HTML頁面。
3.常見問題
post請求里面迟隅,有多種傳參方式:
1.form-data
這種方式需要在header里面聲明Content-Type但骨,然后再添加表單內(nèi)容,另外需要注意的是智袭,有文件上傳操作的時候奔缠,是可以使用表單上傳的,參數(shù)里面是可以選擇文件的吼野。后端獲取的時候要注意校哎,有些框架對同時存在參數(shù)和文件的請求獲取順序是有要求的,必須先獲取文件再獲取其他參數(shù)箫锤,不然會報錯贬蛙。
2.x-www-form-urlencoded
同樣的需要在header里面聲明Content-Type,x-www-form-urlencoded類型的數(shù)據(jù)會將表單轉(zhuǎn)換成鍵值對谚攒。
3.raw
可以上傳json/javascript等格式的數(shù)據(jù)阳准,需要在header里聲明不同的Content-Type,以前遇到過傳對象時馏臭,使用form-data無法完成野蝇,就手動用raw拼成了json對象
4.編碼實戰(zhàn)
POSTMAN的斷言
1.判斷HTTP返回狀態(tài)碼為200 2.判斷響應(yīng)正文中是否包含:"statusCode":200 3. 解析響應(yīng)正文,并判斷statusCode的值是200,message的值是”Success.在SNIPPETS中,往下拉,有一項”Status code:Code is 200”,這個就是為場景中的第一條準備的,就是判斷HTTP返回狀態(tài)碼是否為200括儒。點擊這一項绕沈,可以看到在其左邊出現(xiàn)了:
其中tests["Status code is 200"]中的tests是一個內(nèi)置對象,tests["Status code is 200"]是指為這個斷言起個名稱叫”Status code is 200”,這個名稱可以自行修改帮寻。responseCode.code === 200中的responseCode是內(nèi)置對象乍狐,responseCode對象中有個屬性是code,是指HTTP狀態(tài)碼的code固逗,判斷code是否為200.綜合起來浅蚪,這句代碼的意思是:名稱為”Status code is 200”的斷言中,判斷responseCode對象的code屬性值是否為200.同樣在SNIPPETS中烫罩,找到一項”Response body:Contains string”惜傲,點擊后,在其左邊出現(xiàn)了:
我們需要修改一下:
在第三條贝攒,很顯然我們需要解析JSON串盗誊,所以,在SNIPPETS中找到”Response body:JSON value check”并點擊,在其左邊出現(xiàn)了:
這里面其實是JS代碼哈踱,jsonData變量其實是解析完JSON后的對象荒适,在JS中,一個JSON對象獲取其屬性的值嚣鄙,直接是用jsonData.value吻贿,于是,我們把代碼給修改一下:
這樣一來哑子,我們可以看到一共有tests的斷言4個,點擊Send肌割,發(fā)送請求卧蜓,在響應(yīng)區(qū)內(nèi)可以看到如下圖: