1.背景介紹
當開發人員需要調試一個網頁是否運行正常,并不是簡簡單單地調試網頁的HTML、CSS、腳本等信息是否運行正常,更加重要的是網頁能夠正確是處理各種HTTP請求,畢竟網頁的HTTP請求是網站與用戶之間進行交互的非常重要的一種方式,在動態網站中,用戶的大部分數據都需要通過HTTP請求來與服務器進行交互。Postman插件就充當著這種交互方式的“橋梁”。
2.知識剖析
Postman 是一個非常棒的Chrome擴展,提供功能強大的API & HTTP 請求調試。
它能夠發送任何類型的HTTP requests (GET, HEAD, POST, PUT..),附帶任何數量的參數+ headers;
支持不同的認證機制(basic, digest, OAuth),接收到的響應語法高亮(HTML,JSON或XML);
Postman 能夠保留了歷史的請求,這樣我們就可以很容易地重新發送請求,有一個“集合”功能,用于存儲所有請求相同的API/域。
1.下載安裝postman,postman安裝方法教程
2.有時需要在不同的環境下跑相同的測試,此時可以通過設置環境變量來動態選擇。點擊右上角的設置按鈕:Manage Environments,填寫該環境的名稱:如測試環境,并在key和value中填寫需要的鍵值,創建好所有環境后,在右上角下拉列表選擇需要的環境就好
postman界面介紹:
1、postman調試的歷史記錄,保留了每次測試時的請求參數;
2、在Postman中,Collection類似文件夾,可以把同一個項目的請求放在一個Collection里方便管理和分享,Collection里面也可以再建文件夾;
3、設置environment variables(環境變量)和global variables(全局變量),點擊右邊的眼睛可以快速查看當前的變量;
4、選擇HTTP 請求類型的地方,各種常見的不常見的非常全;
5、請求URL,兩層大括號表示這是一個環境變量,可以在3的位置選擇當前的environment,環境變量就會被替換成該environment里variable的值;
6、點擊可以設置URL參數的key和value;
7、點擊發送請求;
8、點擊保存請求到Collection,如果要另存為的話,可以點擊右邊的下箭頭;
9、設置鑒權參數,可以用OAuth之類的;
10、自定義HTTP Header;
11、設置Request body;
12、顯示發起請求之前執行的腳本;
13、在收到response之后執行的測試;
14、返回數據的格式,Pretty可以看到格式化后的JSON,Raw就是未經處理的數據,Preview可以預覽HTML頁面。
3.常見問題
post請求里面,有多種傳參方式:
1.form-data
這種方式需要在header里面聲明Content-Type,然后再添加表單內容,另外需要注意的是,有文件上傳操作的時候,是可以使用表單上傳的,參數里面是可以選擇文件的。后端獲取的時候要注意,有些框架對同時存在參數和文件的請求獲取順序是有要求的,必須先獲取文件再獲取其他參數,不然會報錯。
2.x-www-form-urlencoded
同樣的需要在header里面聲明Content-Type,x-www-form-urlencoded類型的數據會將表單轉換成鍵值對。
3.raw
可以上傳json/javascript等格式的數據,需要在header里聲明不同的Content-Type,以前遇到過傳對象時,使用form-data無法完成,就手動用raw拼成了json對象
4.編碼實戰
POSTMAN的斷言
1.判斷HTTP返回狀態碼為200 2.判斷響應正文中是否包含:"statusCode":200 3. 解析響應正文,并判斷statusCode的值是200,message的值是”Success.在SNIPPETS中,往下拉,有一項”Status code:Code is 200”,這個就是為場景中的第一條準備的,就是判斷HTTP返回狀態碼是否為200。點擊這一項,可以看到在其左邊出現了:
其中tests["Status code is 200"]中的tests是一個內置對象,tests["Status code is 200"]是指為這個斷言起個名稱叫”Status code is 200”,這個名稱可以自行修改。responseCode.code === 200中的responseCode是內置對象,responseCode對象中有個屬性是code,是指HTTP狀態碼的code,判斷code是否為200.綜合起來,這句代碼的意思是:名稱為”Status code is 200”的斷言中,判斷responseCode對象的code屬性值是否為200.同樣在SNIPPETS中,找到一項”Response body:Contains string”,點擊后,在其左邊出現了:
我們需要修改一下:
在第三條,很顯然我們需要解析JSON串,所以,在SNIPPETS中找到”Response body:JSON value check”并點擊,在其左邊出現了:
這里面其實是JS代碼,jsonData變量其實是解析完JSON后的對象,在JS中,一個JSON對象獲取其屬性的值,直接是用jsonData.value,于是,我們把代碼給修改一下:
這樣一來,我們可以看到一共有tests的斷言4個,點擊Send,發送請求,在響應區內可以看到如下圖: