筆記 - 使用 Postman 進行 API 測試

摁...在測試時很常遇到 API 的測試呢

筆記一下,給未來需要的自己還有其他需要的人

「postman」的圖片搜尋結果

環境準備

你只需要到 Postman 的官網就可以找到下載點囉

不建議使用 chrome 的擴充

Postman 的介面目前長這個樣子

今天主要的主題在寫測試,所以就不加以著墨功能的部分做介紹(因為感覺蠻簡單的XD)

使用 Postman 撰寫測試

在 postman 的頁面中,你可以看到Tests 點擊進去就會到這個畫面,右手邊他就有許多客製化好的方法,只要點下去就可以運作
想要知道更多的 Test Scripts 就可以點擊過去官網看

首先我在 MockAPI這個網站上 做了一些 Mock 的資料
其 Url 為 http://5b74423ea5837400141908c3.mockapi.io/Demo

如果MockAPI的這個網站掛了,那我就...也沒辦法XD,還是供各位方便使用,如果有興趣的人可以到 MockAPI的網站自己建立一個來玩玩~

使用get request 打過去回來資料 如下圖

這時候使用右手邊的 Test Scripts 來建立測試,測試code如下

postman 的測試 code 都是由 javascript 所撰寫
pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
});

pm.test("first data id is 1", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData[0].id).to.eql("1");
});

pm.test("it has 15 records", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.length).to.eql(15);
});

以上測試 Code 主要判斷

  • response 的 status 是否為 200
  • 第一筆資料的 id 是否為 1
  • 總筆數是否為15筆資料

使用 Enviroment 來變更 domain 或 測試資料

首先拿url來當範例,如果需要將 domain 抽換,則將需要變更的 domain 變成 {{url}}

{{變數名稱}} 這裡的變數名稱則是Enviroment 或是 global用的變數名稱 postman 會自動幫你帶入

在右上角點擊齒輪,可以看到你已經設定好的 environment 

按下ADD之後就可以命名你的 Environment 名稱,還有變數名稱及初始值

Demo 15 records 的 environment 長這個樣子 [5b74423ea5837400141908c3]

Demo 20 records 的 environment 長這個樣子 [5b521e36d9b92700141c98ec]

這時候就可以嘗試點選右上角的 No Environment 來變更你的 Environment 來做測試

當你使用 Demo 20 records 的環境時,會發現原本寫的測試 fail了,原因是因為你的 Demo 20 records 的環境打過去回來的 response 資料筆數為 20 筆
所以這時候需要將測試資料抽換成 environment 的變數,就會這麼做

先設定 environment 的變數

Demo 20 records 的 expectedRecords 設定為 20
Demo 15 records 的 expectedRecords 設定為 15

修改測試 Code ,這時候判斷筆數的測試 Code 就會長這個樣子

expectedRecords = parseInt(pm.environment.get("expectedRecords"));
pm.test("it has"+ expectedRecords +" records", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.length).to.eql(expectedRecords);
});

先取得 environment 然後轉型成 int (不轉型的話會錯誤,原因是因為 environment 預設的變數型態為 string)

現在兩個測試都可以因為 environment 改變而變動測試期望資料而通過了

Run Postman

在 postman 有個功能 可以幫你把一整包的 collection 來執行,執行後也能夠將執行結果匯出

現在把剛才寫好的一支API測試存進一個 Collection然後到 Collection 的地方找到創建好的 Collection 來讓 Postman run 寫好的 測試

點擊Run之後會出現下面這個畫面

可以看到畫面左邊有

  • Environment 可以讓你選擇
  • Iterations 則是你需要 run幾次這個collection
  • Delay則是你run完這個 API 之後你需要等待幾秒再開始打下一個 API
  • Log Responses 則是可以讓你選擇紀錄的 Response 型態為 fail 的時候要紀錄或者是都要記錄之類的 [旁邊的提示有說 如果collection是比較大的 則有可能會影響到效能測試的結果]
  • Data 選擇你要使用的檔案
  • Keep variable values 如果勾起來則會把其中更動過的 變數保存起來

接下來就來run個 20 次 看會發生什麼事吧!

可以看到每個 request的時間 跟測試結果(幾個測試通過,幾個失敗),還有status

返回到剛才那頁也可以看到剛才執行的結果

以上是今天的筆記,感謝各位收看,如有錯誤,請各位大大告訴我~

摁...明天下班有時間就寫個 newman的東西好了,他可以幫助我們產生一些報表~