今天的主題是Collection Runner
,能夠依序去執行同一個集合下的所有請求。在前面幾天的挑戰中,我們都是一個個的API進行測試,在開發過程中其實已經滿足很多基本需求。但在開發到一定階段,或是日常維護系統時,常常更需要一次性的去對當前的多數API進行測試,又或是切換Environment
來一次性地對開發或是正試環境做全面的測試。
由於今天的主題會運用到前面幾天的內容,所以接下的操作步驟中也會應用到之前提到的部分功能,那麼在開始之前,請別忘了將今天的挑戰 Day 8: Run a collection 先行fork
到自己的工作區喔。
回到自己的工作區後,打開今天的資料夾Run a collection按照右方文件來進行以下步驟
Add request
來新增請求,並重新命名為get random user
,依序設定方法跟URL為GET
、https://randomuser.me/api
,試戳看看,可以看到該API會回傳隨機產生的一筆類似使用者的資訊,接著我們增加一個測項,由於當前這個請求我們只需要能獲的隨機內容即可,所以測項就單純確認能取得狀態碼200
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
get female user
,從命名可以看出這個請求希望能讓API回應的內容必須是符合female
這個條件的,因此測項我們可以加入這個條件的確認
pm.test("Check gender is female", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.results[0].gender).to.eql('female');
});
目前因為還沒有修改API的參數,所以回傳結果還是隨機的,也就是說有時候隨機到的內容剛好符合條件female
的話就會通過測試,目前先保持這樣,後續再來進行調整。
如果在新增測項時想知道取出的比對值是否如預期,可以用昨天學習到的Console功能
console.log(jsonData) console.log(jsonData[0]) console.log(jsonData.results[0].gender)
get french user
,除了要滿足female
之外,還多加了新條件french
,因此在原本兩個測項下面新增新測項
pm.test("Check nationality is FR", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.results[0].nat).to.eql('FR');
});
到目前為止,我們有多個請求在同一個collection裡,是時候進入今天的主軸Collection Runner
了`,滑鼠點擊今天的Collection,可以看到Run功能按鈕,按下可進入到Collection Runner的管理介面。
在這個介面下,可以去調整執行的順序,也可以勾銷掉項目使其不被執行,右邊還能設定執行次數,按下Run a collection
鈕後就會根據當前設定以及環境變數來進行批次發送了。如下圖,勾銷了submit
項目,之後就不會去發送該請求,這邊其實也可以從資料夾進入Runner,會只引入資料夾內的三個請求。
我們前的步驟裡沒有特別對請求設定參數,所以理論上多執行幾次,是有可能因為隨機結果不符合測向預期,進而導致測試失敗的結果。下圖就是設定執行五次,然後切換到Failed
分頁只列出失敗的情況,可以看到第一個周期裡,有兩個請求失敗了,但在第二個周期裡,只有一個請求失敗,這就是因為隨機造成的結果。
從上面的失敗測項裡,也有列出原因讓我們能夠依據它去修正我們的請求,因此接下來我們要針對第二以及第三個請求,加入參數去正確呼叫API,取得有條件的回傳結果。這邊需要先去查詢API文件,去找如何下參數。
gender:female
這樣一組 key:value
,調整後的URL會是https://randomuser.me/api?gender=female
https://randomuser.me/api?gender=female&nat=fr
設定好後,可以手動多跑幾次,也可以透過Collection Runner來進行多次的測試,確保每一個週期都能夠通過所有測試,到這邊就能夠進行submit
來通過今天的挑戰囉。
今天學習到了Collection Runner,讓我們能夠很快地進行多個API的測試,而其他還有一些設定的部分可以玩玩看,像是Delay
、Data
等等,都會在未來的章節進行介紹,
那麼今天就到這邊,我們明天再見~