今天的主題是延伸之前在Tests
、Pre-requests
的內容,Postman提供了pm
以及postman
兩種物件可以在腳本裡面使用,我們會用pm物件來操作環境變數、取得請求跟回應的資料; 透過postman物件來控制工作流程。但除此之外的功能都是透過手刻javascript
來實作,像是排序演算法或是資料格式等功能。而js本身也是程式語言,所以想必也有很多前人們早已造好的"輪子"可以使用,就如今天標題所述,我們將會透過今天的挑戰來體驗Library。
在開始之前,別忘了將今天的挑戰 Day 24: Using libraries 複製到自己的工作區。今天的挑戰內容有兩項,會各自新增一個請求來體驗其帶來的功能
Dynamic variables:
Postman使用faker 函式庫來生成一些變數、像是人名、郵件地址等等在開發測試階段很常使用的資料,可以讓我們的測試更逼真,讓我們根據下面步驟來體驗看看
新增請求
random chuck norris
GET
https://api.chucknorris.io/jokes/search?query={{$randomWord}}
{{$randomWord}}
以$
符號開頭的變數就是Postman預先定義好的變數,每次呼叫都會自動產生一組可用的詞當作參數query的值,可以多呼叫幾次,觀察Console
裡面實際上帶入的值,或是點擊右方文件圖示下面的Code snippet
圖示,可以看到自動產生其他客戶端程式的程式碼或是指令,下面是以curl
為例,能看到當前亂數使用到的字為Industrial
其他Postman提供的預定義變數還有很多,像是
種類眾多,族繁不及備載,有興趣的朋友都可以點連結去看有沒有合用的,但需要特別注意的是這個請求我們是使用在參數,所以可以直接使用{{$randomWord}}
,如果想要在Tests
等腳本裡面使用的話,要透過pm物件pm.variables.replaceIn
來使用,例如
console.log(pm.variables.replaceIn('{{$randomWord}}'))
Built-in library:
除了預定義的變數之外,Postman還可以用許多內建的函式庫,像是
這些函式庫都是透過javascript實作了相當常見且熱門的功能,都不需要自己重新把輪子發明一次,接著我們就實際新增請求來體驗看看吧,我們預期透過函式庫來找出兩天前是禮拜幾,步驟如下
moments in time
GET
http://worldtimeapi.org/api/ip
require
很輕鬆的就將函式庫載入進來,接著就可以直接使用函式庫裡提供的所有function了
const moment = require('moment'); // require
let day = moment().subtract(2, 'days').format('dddd');
console.log(day);
到這邊就完成了今天的挑戰了,可以直接通過submit來確認,今天的挑戰非常容易,在之後實際使用時肯定會有很多機會碰到,只要碰到需要寫很多程式碼處理的邏輯,不妨先找找看是否已經有現成的函式庫供使用,肯定能夠節省許多時間,甚至避免自己開發還要偵錯的麻煩。
延伸閱讀:
那麼今天就到這邊,我們明天見~