1. 程式人生 > >最強PostMan使用教程(4)- 使用Postman的模擬服務模擬(mock)後端

最強PostMan使用教程(4)- 使用Postman的模擬服務模擬(mock)後端

最近在做一些app,前後端分離的開發模式是必須的。一直用的python flask做後端的快速POC,python本身就是一門膠水語言,開發起來方便快捷,而flask又是一個極簡的webserver框架(比Django簡潔)。但在這裡推薦的是使用Postman,避免同時開啟pycharm和webstorm,同時對於不懂python的同學也是福音。

在整個開發過程中,前端或後端的延遲可能會阻礙相關團隊有效地完成工作。一些後端的API工程師已經開始使用Postman去測試後端endpoint,而不依賴於前端UI來模擬API請求。

現在,Postman開發了一種新的模擬服務,使團隊能夠模擬後端伺服器。前端開發人員可以模擬Postman collection(和相應的環境)中的每個endpoint,以檢視潛在的響應,而無需實際啟動後端。

前端,後端和API團隊現在可以並行工作,從而釋放之前因這些依賴性而延遲的開發人員。現在,讓我們看看Postman是如何模擬後端的。

設定一個用於模擬的集合

在我的最強PostMan使用教程(2) - 在test suite中執行test case中已經介紹過了Collection集合,這裡,前端開發得先知道有哪些url是用於和後端通訊的。

在這個例子中,我們有一個Tesk Mock的集合,並且配置了同名的環境的Tesk Mock
集合中,有兩個request:mock_r_1mock_r_2,一個GET,一個POST,對應的path分別是/test,/tp。

這裡寫圖片描述

接下來,讓我們設定一個 mock server

並且為每一個endpoint模擬一條response。注意,這兩個是必須的步驟,沒有必然的先後順序。你可以先mock response,再建立mock server,也可以先建立mock server,再mock response。這裡,我們先建立一個mock server。

建立mock server

進入左邊的導航欄,選擇我們的Test mock集合,會出現一個三角符號(如下圖中Postman Echo集合旁邊的符號),點選之後,三角符號會反向(如下圖中Test mock集合旁邊的符號),並且出現針對該集合的配置。這裡有一個Mocks,請選擇之:

這裡寫圖片描述

接下來的步驟很簡單,一路點選建立即可:

這裡寫圖片描述

最後一個步驟,我們得到了一個mock server的地址,也就是說,這個mock server是postman在自己的伺服器上為我們建立的,無論我們是否開啟postman,我們都可以直接用這個地址來訪問mock的API。

別擔心你會忘掉這個地址,因為它會自動儲存在collection的配置中,按照我們剛才是的步驟,回到這個集合中,在Mocks下面,你會看到你建立的server:
這裡寫圖片描述

點選圖中的圖示,會直接複製到貼上板上。然後你可以將其儲存在Tesk mock環境的變數中。也可以直接使用。

但這時,你擁有的只是一個mock server,上面沒有任何服務可用。你需要在這個server上註冊endpoint,並且mock對應的response,才可以使之服務於你。

mock每個endpoint的response(建立example)

這裡的步驟也不復雜,針對每個endpoint,或者說是host下面的path,你需要自己提供mock data。在postman裡面,這個概念叫做example,即每一個你需要訪問的路徑/介面/資源,都可以提供一個栗子,即便你連不上,你也可以通過例子知道該路徑/介面/資源大概會返回什麼樣的response。這個example不單單是為了mock而做的,因為postman可以生成API文件,在生成文件的時候,這個例子也會直接放在文件裡,方便查閱文件的人瞭解介面。

具體建立步驟:

  1. 開啟collection,選擇request
  2. 為request建立一個example
  3. 儲存example

這裡寫圖片描述

這裡需要注意的是:

  • 每個request都可以有多個example
  • 每個example建立之後都可以修改
  • Mock server只會採用最後建立的example

使用mock server

在前面的步驟中,我們已經建立了mock server,並且為每個end point至少建立了一個example。這時,mock server就不再只是一個空殼了,它會為每一建立了example的endpoint提供mock服務,mock的內容就是最後建立的example的內容。

我們可以直接在postman上測試:

這裡寫圖片描述

也可直接在瀏覽器上驗證:
這裡寫圖片描述

注意,在驗證第二個endpoint的時候,失敗的原因是,endpoint是POST許可權的,但瀏覽器預設是用GET去訪問。

對開發模式的啟發

使用postman,前端團隊和後端團隊完全可以在約定了API介面之後,各自完成開發,而不需要收到對方進度的影響,因此在真正開始開發工作之前,介面、資料格式的約定變得尤為重要,當然,因為postman是支援組開發的,即便介面,資料有變化,也可通過share collection的方式,及時同步collection下request的變化,並立即反應到mock server上。並且,因為mock server是掛載postman的伺服器上,只要有網路,前端是可以在家辦公,而不用受制於內網限制的。