摁...在測試時很常遇到 API 的測試呢
筆記一下,給未來需要的自己還有其他需要的人
環境準備
你只需要到 Postman 的官網就可以找到下載點囉
Postman 的介面目前長這個樣子
今天主要的主題在寫測試,所以就不加以著墨功能的部分做介紹(因為感覺蠻簡單的XD)
使用 Postman 撰寫測試
在 postman 的頁面中,你可以看到Tests 點擊進去就會到這個畫面,右手邊他就有許多客製化好的方法,只要點下去就可以運作
想要知道更多的 Test Scripts 就可以點擊過去官網看
首先我在 MockAPI這個網站上 做了一些 Mock 的資料
其 Url 為 http://5b74423ea5837400141908c3.mockapi.io/Demo
使用get request 打過去回來資料 如下圖
這時候使用右手邊的 Test Scripts 來建立測試,測試code如下
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}}
在右上角點擊齒輪,可以看到你已經設定好的 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 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的東西好了,他可以幫助我們產生一些報表~