今天要介紹的主題是Monitoring
,顧名思義,可以用來監控API,透過指定一個固定的時間間隔,讓Postman可以自動執行我們所撰寫的測試腳本,就像 Day 0 就被用來提醒我們每天進行挑戰的步驟,只不過這並不是Monitoring
真正的用法,關於應用的場景可以參考Postman API Monitoring Examples,最常見的就是利用這功能來時時確認API是否還健在,或是利用前面學過的Workflow
串聯API來達成當某條件符合才繼續進行指定動作。
今天的挑戰就會實際使用Monitoring
來定時檢查濕度,決定是否要進行澆水的動作。記得在挑戰開始前,把 Day 11: Monitoring fork
到自己的工作區。
回到自己工作區,打開資料夾Monitoring
,根據其文件描述我們需要建立兩個請求,一個用來取得狀態,一個用來修改資料,具體步驟可以參考下面:
Add request
,並重新命名為should I water the plants?
,方法是GET
,URL則填入https://water-ttl.herokuapp.com/hygrometer
,試戳可以得到當前濕度的數值,而且多戳幾次可以觀察到數值正在不斷變小。water the plants
,內容則為POST https://water-ttl.herokuapp.com/water
,另外還需要給定form-data
,需要一組duration :10
,設定好後先不要發送,因為這個API是用來澆水的,一旦發送就會使濕度提高,也就是會影響第一個請求回傳的結果。到這邊我們就有兩個請求了,接著需要為兩個請求添加測試,讓後續自動執行時能判斷濕度過小才進行澆水。
should I water the plants?
的測試: 首先先要能確定這個API能正常回應200
,其次才去判斷濕度,也就是回傳的level值,這邊設定成當濕度大於0.6時,就不繼續往下執行其他請求。
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
var jsonData = pm.response.json();
if (jsonData.level > 0.6) {
postman.setNextRequest(null);
}
water the plants
的測試: 因為之後自動執行時會先執行第一個請求,而且主要的判斷我們已經放在了前面,所以這個請求的測試就比較單純,確認200
然後都沒有其他請求需要執行了。
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
postman.setNextRequest(null)
測試添加完後其實就可以透過執行整個collection來試試看,是否執行的流程合乎預期,接著就是今天的主軸Monitoring
了。從右邊進入Monitors
分頁來新增一個監控器,需要設定的選項很少,主要就是指定觸發的時間點,由於這邊使用的是免費版,所以最短只能設定到小時,付費版才能指定到分鐘等級。
設定完之後就可以等時間到或是直接手動執行Run
,就可以在這邊看到該次執行的結果,從下圖可以看到手動觸發了兩次,而且第二次依序執行了兩個請求。
最後,就可以直接進行submit
,如果測項都通過的話就表示通過今天的挑戰囉。
今天體驗了Monitoring
真正的用法,適合那些跟著時間變化狀態的情境,像是每天早上在公司的訂便當時間截止前,檢查自己訂過便當沒有...
那麼,今天就到這邊囉,咱們明天見~