『政善治』Postman工具 — 11、Postman中對Cookie的操作

繁華似錦Fighting發表於2021-05-18

上一篇文章說明了Postman中關於Cookie的相關操作,還是以Cookie舉例,來說明下一在Postman中測試關聯介面。

1、關聯介面說明

例如:有可能存在部分任務場景,或者部分API介面必須登入後才能訪問。

設想一下,現在後端基本都是熱更新框架,每次熱更新都會清除Session,邊開發邊測試時,每次熱更新後,都要先訪問一下登入介面,再訪問其他介面,有點繁瑣。

下面我們使用電商一個專案進行演示,在登入介面完成登入之後,通過檢視購物車介面獲取該使用者購物車中的資訊。

2、測試關聯介面實現步驟

那麼按照一個標準的流程來說,我們應先去呼叫登陸介面,獲取到對應的Cookie之後存入環境變數中,再來進行後續檢視購物車的請求。

步驟1:建立登陸請求並執行成功。

登陸介面地址:http://www.testingedu.com.cn:8000/index.php?m=Home&c=User&a=do_login&t=0.3508523582926

image

步驟2:編寫登陸請求中的Tests指令碼。

目的:把上面登陸請求的響應頭中,目標Cookie內容儲存到環境變數中,供後續介面使用。

// 獲取相應體全部資訊
// var jsonData = pm.response.json();
// console.log(jsonData)

// 獲取響應頭的全部資訊,獲得的是一個陣列
// Server: nginx/1.14.1
// Date: Sat, 20 Feb 2021 09:50:16 GMT
// Content-Type: text/html; charset=UTF-8
// Transfer-Encoding: chunked
// Connection: keep-alive
// X-Powered-By: PHP/7.0.33
// Set-Cookie: is_mobile=0; expires=Sat, 20-Feb-2021 10:50:16 GMT; Max-Age=3600; path=/
// Set-Cookie: PHPSESSID=54i0ralr3p7473himrr1tblpr0; path=/
// Set-Cookie: user_id=8; path=/
// Set-Cookie: is_distribut=0; path=/
// Set-Cookie: uname=summer; path=/
// Set-Cookie: cn=0; expires=Sat, 20-Feb-2021 08:50:16 GMT; Max-Age=0; path=/
// Expires: Thu, 19 Nov 1981 08:52:00 GMT
// Cache-Control: no-store, no-cache, must-revalidate
// Pragma: no-cache
const headerData = pm.response.headers;
console.log(headerData)

// 轉換成json格式資料
// var jsonData = JSON.stringify(headerData);
// 轉換成陣列物件
// var result = JSON.parse(jsonData);

// 定義一個儲存cookie的變數
var cookieData = "";

// 遍歷響應頭資訊
for(var i in headerData.members){
    // 刪選出Set-Cookie開頭的響應頭資訊
    if(headerData.members[i].key=='Set-Cookie'){
        // 除錯程式碼
        console.log(headerData.members[i].value)

        // 如果是PHPSESSID的cookie資訊
        if(headerData.members[i].value.substring(0, 9) == "PHPSESSID"){
            //console.log(true);
            // 儲存目標cookie
            cookieData = headerData.members[i].value;
            break;
        }
    }
}

// 獲取到PHPSESSID=akf4tpeu6satce3bft0giq9uj5
var cookievalue = cookieData.split(";")[0];
console.log(cookievalue)



// 以上資訊就是為例獲取必要的資料,然後需要把這些資料存入環境變數中
// 把關於登陸認證的cookie資訊儲存到環境變數中
pm.environment.set("cookie", cookievalue);

執行完登陸介面後,環境變數中會新增一個Cookie變數。

image

總結:意思就是把登陸成功後所返回的Cookie資訊儲存到環境變數中,提供給後續的介面使用。

步驟3:呼叫檢視購物車介面

請求頭中的Cookie配置,去呼叫環境變數中的Cookie資訊。

檢視購物車介面地址:http://www.testingedu.com.cn:8000/index.php?m=Home&c=Cart&a=header_cart_list

image

總結

Postman對關聯介面的測試步驟如下:

  1. 先獲取前一個介面的返回json資料。
  2. 提取json資料中需要的資料,並儲存到環境變數/全域性變數中。
  3. 在下一個介面中,使用{{變數名}}的方式,將環境變數/全域性變數寫入到下一個介面的請求中。

提示:我們也可以在Pre-request Script中寫一個測試集指令碼,每次使用介面前,先呼叫一次登入介面進行登陸,然後將cookie資訊存入環境變數(也可以不存,因為Postman會自動儲存),這樣我們可以直接呼叫後續介面了。

3、補充:Postman中將請求轉換成程式碼

有些時候,我們在Postman進行請求的測試後,需要轉換成程式碼,此時我們可以直接通過Code將Postman 實現的介面,轉為任意的語言的程式碼,如:Java語言的OkHttp或者Python語言的Requests庫等程式碼。

例如:我們選擇一個Post請求,點選Save按鈕下面的Code

image

然後會彈出如下介面:

例如我們在左側選擇Python-Requests,在右側皮膚中,會把該測試介面用requests庫的程式碼展示出來。

image

之後可以把以上內容編輯到測試框架中。

參考:https://www.cnblogs.com/Mkkk/p/14399523.html

相關文章