用Mockoon測試API交互
譯文?譯者 | 布加迪
審校 | 孫淑娟
自動處理重復(fù)的任務(wù)是系統(tǒng)管理員日常工作的核心部分。這種自動化越來越需要使用基于Web的API ,以便跨設(shè)備、云提供商或軟件即服務(wù)(SaaS)工具來協(xié)調(diào)活動。無論編寫的是shell腳本還是與Web服務(wù)交互的Ansible劇本,您都需要徹底測試代碼。
模擬API的能力是這個測試過程的重要部分。模仿真實的API,以便您開發(fā)和測試API交互。雖然一些工具和供應(yīng)商提供實時沙盒環(huán)境,但能夠在本地模仿API對于高級測試場景非常有用,比如修改響應(yīng)的正文或HTTP狀態(tài)代碼。如果您正處于自行開發(fā)API的初始階段,還需要在編寫代碼之前快速構(gòu)建端點。
Mockoon就是支持這么做的一種選擇。Mockoon是一款出色的開源工具,有豐富的用戶界面,可用于快速構(gòu)建模擬API,并在本地機器上運行它們。
安裝Mockoon
您可以通過官方軟件包在Windows、macOS和Linux上安裝Mockoon,包括AppImage和RPM格式。Mockoon安裝完畢后,官方文檔為新用戶提供了出色的??教程??。
Mockoon擁有圖形界面和命令行接口(CLI)實用程序,本文著重介紹如何使用圖形界面。
創(chuàng)建環(huán)境
在Mockoon中處理新項目的第一步是創(chuàng)建一個新環(huán)境。環(huán)境讓您可以將API端點分成邏輯組。每個環(huán)境也可以在自己的端口上運行,使您能夠在同一主機上模擬多個API。環(huán)境保存為JSON文件,可以輕松導(dǎo)入、導(dǎo)出并與代碼一起保存。
只要點擊如下所示的“新建環(huán)境”圖標,即可創(chuàng)建一個環(huán)境。它將提示您選擇保存環(huán)境JSON文件的位置。環(huán)境創(chuàng)建后,您可以開始為它添加路由。
圖1
添加基本的API路由?
大多數(shù)API交互都涉及一個簡單的請求和響應(yīng)循環(huán),該循環(huán)常常返回JSON對象。開始使用Mockoon前,建立一條簡單的API路由。點擊界面中的+號,即可為環(huán)境添加路由。
我在/api/v1/healthcheck處添加了返回200 OK狀態(tài)碼的路由,如下例所示。該示例還返回JSON響應(yīng),含有關(guān)于健康狀況檢查的信息:
圖2
一旦添加路由并啟動服務(wù)器(或重新啟動,如果它已經(jīng)在運行),端點就可以訪問了:
圖3
生成隨機響應(yīng)數(shù)據(jù)
API響應(yīng)正文中的靜態(tài)值涵蓋許多基本的測試用例。Mockoon也可以在響應(yīng)正文中生成隨機數(shù)據(jù),用于更真實的測試。??Faker.js庫??用于生成隨機數(shù)據(jù)。隨機生成的值可以在響應(yīng)正文中進行模板化,并返回給請求者。
在下面示例中,我添加了另一個端點:/api/v1/hosts/:id。:id表示這是一個URL參數(shù)。響應(yīng)正文返回JSON對象,該對象包含附有隨機生成數(shù)據(jù)的多個字段。
圖4
使用此配置,針對API端點的每次調(diào)用都顯示一組不同的假數(shù)據(jù):
圖5
注意:Mockoon實現(xiàn)的Faker.js版本可能不是最新的,因此在編寫模板時務(wù)必確保查看的是正確版本的Faker文檔。
添加身份驗證和規(guī)則
大多數(shù)API端點都需要身份驗證,常常采用含有API令牌的HTTP標頭這種形式。確保您的工具能夠正確處理來自端點的身份驗證失敗對于開發(fā)強大的自動化非常重要。Mockoon允許您定義可用于返回不同響應(yīng)的規(guī)則,比如標頭需求。
規(guī)則是在路由的“規(guī)則”選項卡上定義的。下面的示例使用兩個規(guī)則擴展了/api/v1/hosts/:id端點。第一條規(guī)則(響應(yīng) 1)返回HTTP 401 Unauthorized。如果沒有其他規(guī)則與請求匹配,就使用第一條規(guī)則。
圖6
第二條規(guī)則(響應(yīng) 2)要求請求含有值等于40650a76的X-Auth-Token HTTP標頭。任何與此規(guī)則匹配的請求都會收到200 OK和來自上一個示例的JSON響應(yīng)。
圖7
這些規(guī)則導(dǎo)致任何在X-Auth-Token標頭中不包含正確值的請求失敗,并返回HTTP 401 Unauthorized。擁有正確令牌的請求將繼續(xù)接收數(shù)據(jù),如下所示:
圖8
這是使用規(guī)則根據(jù)請求屬性控制響應(yīng)行為的一個基本示例。
Mockoon的規(guī)則引擎功能強大,能夠創(chuàng)建非常高級的場景。如果查閱??官方文檔??,可以最充分地了解它。
原文標題:??Test API interactions with Mockoon???,作者:Anthony Critelli?