接口測試04--postman接口測試

哈嘍,大家好!我是minisummer!首先感謝您的關注!
今天給大家分享的內容是接口測試必備的postman測試工具的使用:postman發送get與post請求,變量的設置與引用,文件的導入與導出,斷言機制,參數化(數據驅動),批量執行測試集,環境變量與全局變量的設置,定時器的使用,關聯(請求依賴),測試結果的導出。

Postman簡介

下載地址:https://www.getpostman.com/apps
Postman是谷歌開發的一款網頁調試和接口測試工具,能夠發送任何類型的http請求,支持GET/PUT/POST/DELETE等方法。Postman非常簡單易用,可以直接填寫URL,header,body等就可以發送一個請求,用來測試api接口非常方便。

Postman的優點

  • 使用簡單,無需搭建環境,直接使用,可以快速構建請求。
  • 保存以供以后回放使用。
  • Postman有響應結果的斷言功能,可以用來寫測試用例。
  • 可以把測試用例放在同一個目錄下批量運行管理,可以設置迭代次數。
  • 可以設置環境變量,方便測試環境和生產環境使用同一套測試用例。
  • 調試結果方便查看。

Postman接口測試工具的使用

1.創建文件夾

創建文件夾來保存我們接口請求的數據。

postman創建文件夾

菜單欄介紹

同步請求-同步請求數據到本地
抓包圖標-使用Postman抓取API請求和cookie
設置圖標-應用程序設置
通知圖標-接收通知或廣播
分享圖標
賬戶管理

2.完成get請求和post請求

Get請求:參數在params里設置。

get請求

Post請求:參數在body里設置。

方式一:表單提交,在body中選擇x-www-form-urlencoded
等價于application/x-www-from-urlencoded,會將表單內的數據轉換為鍵值對。

方式二:row傳參
可以上傳任意格式的文本,可以上傳text、json、xml、html等,一般消息主體是序列化的JSON字符串。

方式三:Form-data 傳參
就是http請求中的multipart/form-data,它會將表單的數據處理為一條消息,以標簽為單元,用分隔符分開。既可以上傳鍵值對,也可以上傳文件。

post請求

設置參數

設置參數可以使用bulk edit模式和Key-value edit模式。

設置參數

3.導出和導入接口文件

文件導入與導出

4.斷言(檢查點)

Postman添加響應處理,通過檢查響應數據是否符合預期來判斷用例是否通過。
Postman提供了很多常用斷言方式:比如對響應狀態碼、響應內容等進行斷言。


斷言(檢查點)

常見斷言代碼
參考文章:https://blog.csdn.net/qq_37775060/article/details/79498591

//判斷返回狀態碼為200
pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
});
//判斷返回元素中含有ok
pm.test("Body matches string", function () {
    pm.expect(pm.response.text()).to.include("OK");
});
//判斷返回json數據中某個鍵對應的值,Your test name表示這個測試片段的名稱,可以自己任意定義;jsonData.value表示響應json串中的某個鍵,
pm.test("Your test name", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.value).to.eql(100);
});
//判斷響應內容是否和預期內容完全一致
pm.test("Body is correct", function () {
    pm.response.to.have.body("response_body_string");
});
//檢查content-Type是否包含在header返回
pm.test("Content-Type is present", function () {
    pm.response.to.have.header("Content-Type");
});
//響應時間小于200ms
pm.test("Response time is less than 200ms", function () {
    pm.expect(pm.response.responseTime).to.be.below(200);
});
//成功的POST請求狀態碼
pm.test("Successful POST request", function () {
    pm.expect(pm.response.code).to.be.oneOf([201,202]);
});
//狀態碼:代碼中有指定字符串Created
pm.test("Status code name has string", function () {
    pm.response.to.have.status("Created");
});
//response body:將XML轉換為JSON對象
var jsonObject = xml2Json(responseBody);

5.將接口文件轉化為不同的代碼

接口文件轉為不同代碼

6.參數化(數據驅動)

在環境中設置參數,為參數設置不同的值。

參數格式:{{參數名稱}}


參數化

參數的引用

文檔參數化:Postman支持Json文檔,txt文檔,CSV文檔

txt文檔

引用變量

7.迭代

Runner中設置迭代,對接口進行批量測試,可以對文件夾中的所有接口進行批量測試。

集合:即是postman中的Collections,類似文件夾,可以把同一個項目的請求放在一個集合里方便管理和分享。測試人員下次測試可以直接從集合中找到要執行的測試case。可以讓單個的request分組到一起,對每個request都有很多個testcase,都分組收藏到集合里面,進行自動化測試和回歸測試。如果想將自己的集合分享給團隊內其他人,可以點擊Share按鈕進行分享。

1.創建測試集:在左側面板下點擊New collections按鈕。
2.創建多條測試用例,點擊左側save按鈕,保存到創建的測試集中。
3.點擊測試用例集邊上右邊的run按鈕,或者頂部菜單欄的Runner進行運行。
4.選擇環境信息、迭代次數、請求的等待時間。
5.運行結果。

批量運行測試集

8.環境變量和全局變量

接口測試時,為了方便修改和管理環境和參數,我們會把域名信息和請求的固定參數設為環境變量,把接口參數的請求或者返回參數中的固定值設為全局變量。

全局變量

代碼設置全局變量:在tests模塊設置。

pm.globals.set("variable_key", "variable_value");

可視化設置全局變量:小眼睛—global—edit

設置全局變量

進入對應界面后,便可直接進行管理

管理變量

多環境區分與切換

通常情況下,我們的接口都會分為測試版本和線上版本(或者更多),而他們的區別可能僅是 ULR 不同,那么全局變量便不大合適解決這個問題。

代碼設置環境變量:

//注意,該參數只添加到你當前選擇的環境的“參數集”中

postman.setEnvironmentVariable("variable_key", "variable_value");
設置環境變量
環境變量

使用環境及變量:{{name}}

切換環境

9.定時任務(監控器)

參考文章:https://blog.csdn.net/cai_iac/article/details/81030619?utm_source=blogxgwz9
Postman 提供了一個 Monitors (監視器)功能,支持我們提交一個測試任務,按照設置的定時器進行運行,如每小時測試一次,具體操作如下:

postman定時任務

10.請求依賴(關聯)

接口與接口之間可能會有數據依賴的問題。比如購物下單接口需要依賴登錄接口返回的一個標識token,那么我們請求下訂單接口時只要一起攜帶 token 參數進行請求即可。所以問題變為:保證接口調用順序。
即將接口A返回的數據傳遞給后續的接口B、C、D。

10.1接口默認執行順序

接口的執行順序其實就是按照這邊目錄中的順序(從上到下),即: Request1 -> Request2 -> Request3。


接口執行順序

10.2自定義執行順序

默認執行順序通常沒法滿足我們復雜的業務需求,postman.setNextRequest("填寫你要跳轉的接口名") ,支持我們跳轉到指定接口繼續執行,舉個例子:跳過運行request2

自定義執行順序-

自定義執行順序需要注意幾點

  1. postman.setNextRequest() 只在運行集合測試的時候生效,也就是說我們單獨運行 (Send) 接口Request1 時,函數是不起作用的。
  2. 當我們運行集合測試成功從 Request1 -> Request3 后,如果 Request3 后面還有接口,那么后面的接口仍然繼續按默認順序執行,即圖中的接口 Request4 仍會被執行。
  3. 指定的跳轉接口必須屬于同一個集合中。
  4. setNextRequest() 函數不管在 Tests 腳本中何處被調用,它都只在當前腳本最后才被真正執行。比如我們將圖中的第二行與第一行互調后,那么在運行跳轉函數后第二行代碼仍會被執行。
    所以,利用 setNextRequest() 函數,我們便可以按照條件跳過不必要的接口,或者建立我們自己的一個邏輯測試。

10.3 解決依賴問題

掌握以上的預備知識后,我們開始看看如何用 Postman 解決存在依賴關系的接口測試。

假設場景

我們的接口 Request1 為登錄接口,登錄成功將會返回一個 access_token 字段作為標識(已實現)。那么假設接口 Request3 為一個下訂單的接口,需要攜帶登錄返回的 access_token 才能正常訪問。

思路

  1. 保證 Request1 在 Request3 之前被運行

  2. 將 Request1 返回的 access_token 的值添加到環境變量"參數集"中。

  3. Request3 在請求時引用 access_token 的值

將返回值存在 “全局變量” 或者 “環境變量” 中,視具體業務情況而定,該例中 access_token 的值是與環境有關的,所以這里選擇使用環境變量集存儲。

Postman 中的操作

  1. 我們目錄中已保證 Request1 接口優先執行

  2. Request1 中 Tests 的代碼情況:

if(responseCode.code === 200 && responseBody.has("access_token")){
    //如果 code 為 200, 并且返回的數據中存在 access_token 關鍵字,則認為登錄成功
    tests["login"] = true;
    //將返回的內容轉為 json 格式,并且取到 access_token 內容,添加到環境變量中
    var jsonData = JSON.parse(responseBody);
    //access_token的取值方式視具體的 json 數據結構而定
    postman.setEnvironmentVariable("token",jsonData.result.access_token);  
    //跳轉到 Request3 接口
    postman.setNextRequest("Request3")
}else{
    tests["login"] = false;
    //登錄失敗,可以選擇跳轉到對應失敗后的處理接口進行測試
    //postman.setNextRequest("Other Request")
}
}

運行并查看結果

運行集合測試,可以看到我們結果符合我們的預期,Request1 和 Request3 通過測試,Request2 被跳過,Request4 仍被執行。

11.導出測試結果

導出測試結果

請大家多多指教~
以上內容希望對你有幫助,有被幫助到的朋友歡迎點贊,評論。
注:轉載請注明出處,商用請征得作者本人同意,謝謝!!!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。