在介面測試中,某些介面的呼叫,需要帶入已有Cookie,比如有些介面需要登陸後才能訪問。
Postman介面請求使用Cookie有如下兩種方式:
1、直接在頭域中新增Cookie頭域,適用於已經知道請求所用Cookie資料的情況。
2、使用Postman的Cookie管理機制,既可以手動新增,同時Postman也會將操作流程中獲取的引數自動儲存,因此可以通過呼叫前置介面來完成Cookie獲取。(就是在Pre-request Script
傳送一次登陸請求)
下面我們以一個電商專案為例,使用電商專案進行測試,在登入介面完成登入之後,通過購物車介面獲取購物車中的資訊。
提示:要獲取購物車介面中的資訊,需要使用登入後的Cookie保持登入狀態。
- 電商首頁:http://www.testingedu.com.cn:8000/
- 登入頁面:http://www.testingedu.com.cn:8000/index.php/Home/user/login.html
- 購物車頁面:http://www.testingedu.com.cn:8000/index.php/Home/Cart/index.html
- 登陸呼叫介面:http://www.testingedu.com.cn:8000/index.php?m=Home&c=User&a=do_login&t=0.3508523582926
- 檢視購物車呼叫介面:http://www.testingedu.com.cn:8000/index.php?m=Home&c=Cart&a=header_cart_list
1、往常的Cookie處理方式
我們可以通過Fiddler工具在一個網站上抓取我們需要URL。
如果是設計到Cookie、Session的介面,我們需要保持網站在網頁的登陸狀態。
步驟1:我們直接呼叫檢視購物車介面。
可以看到我們在未登入的狀態下,無法檢視購物車中的資訊。
因為我們在這一次請求介面的時候,並沒有提交登陸之後的Cookie資訊。
步驟2:我們進行登陸,再檢視購物車。
我們先進行登陸,然後再檢視購物車,我們抓取檢視購物車的介面,如下圖:
Cookie資訊在進行介面訪問攜帶的時候,通常在請求頭(Request Headers)的Cookie屬性中。
步驟3:把上面的Cookie複製,填寫在Postman的檢視購物車請求中。
之後我們再次傳送請求,如下圖:
這就是我們在Postman中第一種處理Cookie的方式。
提示:這種方式處理Cookie,是基於該Cookie能夠保留一段時間,也就是該Cookie在一段時間內是有效的。
如果在瀏覽器中,做登出操作,該Cookie的資訊也會失效,訪問購物車介面還是無法檢視購物車中的資訊。
2、Postman中的Cookie管理機制
Postman中自身也提供了Cookies的管理機制,會自動幫助我們儲存響應Cookie的記錄。
步驟1:建立登陸網站的請求,並檢視Cookies管理。
建立登陸網站的請求,如下圖:
提示:還有一個驗證碼屬性
verify_code
,可以不新增該屬性。也可以新增,賦值1即可。(那說明驗證碼是一個前臺校驗,網站登陸的時候,驗證碼填1也是可以登陸的。)
檢視Postman中Cookies管理,很簡單,就是在請求的編輯頁面中,在Send
按鈕的下方有一個Cookies
,點選即可。如下圖:
我們可以看到,之前訪問過百度的一些Cookie內容都儲存在裡邊了。
步驟2:點選傳送登陸請求,再次檢視Cookies管理。
傳送請求,如下圖:
我們再次檢視Cookies管理的內容。
步驟3:我們再次傳送檢視購物車介面。
看看是否能夠檢視到購物車中的內容,看下圖:
總結:
Postman中關於的Cookie管理:
我們訪問過的網站,相關的Cookie資訊,Postman會自動的幫我們進行儲存。
比如我們進行過登陸操作,在訪問之後的操作,後續的介面就會自動攜帶Cookie管理中的資訊進行訪問了。(只能保持一段時間內有效)
這時候我們用測試集的Run按順序執行這兩個介面就非常的方便了。
3、自定義Cookie管理內容
還是以查詢購物車內容為例:
步驟1:檢視Cookie管理內容。
步驟2:填寫伺服器域名來新建Cookie。
也就是網站的名稱,是你自定義儲存Cookie對應的網站的名稱。
點選Add
按鈕進行新增,如下圖:
步驟3:點選Add Cookie
新增Cookie內容。
只修改目標中的Cookie_1=value;
部分,其他預設即可。
點選Save
儲存。
Cookie模板內容說明:
Cookie_1=value; # Cookie的內容
Path=/; # 表示哪些路徑下的檔案有許可權讀取該 cookie
Domain=.www.testingedu.com.cn; # 網站域名
Expires=Sun, 20 Feb 2022 07:11:54 GMT; # 過期時間
說明:
因為訪問網站時候會儲存到客戶端很多的Cookie資訊,在訪問其他介面的時候,只帶相關的Cookie就可以,不用帶所有的Cookie訪問。
例如關於登陸授權的Cookie資訊就是
PHPSESSID
,我們只儲存這一條Cookie即可。(關於登陸許可權的Cookie資訊,一般都叫
sessionID
這樣類似的名稱。)(如果介面文件中寫的詳細,都可以在介面文件中找到,一般不可能。)
步驟4:訪問查詢購物車介面。
我們可以看到請求頭中沒有Cookie資訊,依然能夠獲得購物車中的內容。
以上就是Postman中關於Cookie的基礎操作。