上一篇文章說明了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
。
步驟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變量。
總結:意思就是把登陸成功后所返回的Cookie信息存儲到環境變量中,提供給后續的接口使用。
步驟3:調用查看購物車接口
請求頭中的Cookie配置,去調用環境變量中的Cookie信息。
查看購物車接口地址:http://www.testingedu.com.cn:8000/index.php?m=Home&c=Cart&a=header_cart_list
。
總結:
Postman對關聯接口的測試步驟如下:
- 先獲取前一個接口的返回json數據。
- 提取json數據中需要的數據,並保存到環境變量/全局變量中。
- 在下一個接口中,使用
{{變量名}}
的方式,將環境變量/全局變量寫入到下一個接口的請求中。
提示:我們也可以在
Pre-request Script
中寫一個測試集腳本,每次使用接口前,先調用一次登錄接口進行登陸,然后將cookie信息存入環境變量(也可以不存,因為Postman會自動存儲),這樣我們可以直接調用后續接口了。
3、補充:Postman中將請求轉換成代碼
有些時候,我們在Postman進行請求的測試后,需要轉換成代碼,此時我們可以直接通過Code
將Postman 實現的接口,轉為任意的語言的代碼,如:Java語言的OkHttp或者Python語言的Requests庫等代碼。
例如:我們選擇一個Post請求,點擊Save
按鈕下面的Code
然后會彈出如下界面:
例如我們在左側選擇Python-Requests
,在右側面板中,會把該測試接口用requests庫的代碼展示出來。
之后可以把以上內容編輯到測試框架中。