顯示具有 API測試 標籤的文章。 顯示所有文章
顯示具有 API測試 標籤的文章。 顯示所有文章

2023年9月20日 星期三

Postman Mock Server & Mock API

 在前後端分離的架構下,在 api 規格開出來後前端需等待後端完成 api 後才能做後續的開發;或是當不只是一個部門開發時,可能需要與其他部門合作等待對接API資料時。Mock Server能回傳假資料供前端使用,等後端完成 api 後他只需要切換 end point 就能使用真實資料。

Postman Mock Server 是一個可以快速建立 API Server 的工具,它可以讓您在沒有真實 API 的情況下,發出請求並返回 Postman 中定義的模擬數據。您只需要為您的請求添加一個或多個示例,然後創建一個模擬服務器,就可以模擬真實 API 的行為。Postman有可以每個月呼叫 1000 次 mock server  的免費額度,超過就必須要付費了。可以從這裡看到使用量。

使用 Postman Mock Server 建立 Mock API 的步驟:


1. 選擇一個現有的集合或添加一個新的集合(添加新的請求)。


2.選擇 Method 跟填寫 request 的 URL path。例如,如果您要模擬一個 GET 請求,可以填寫 /home_index。如果API已經設計好要回傳的內容也可以一併填入Request Body中。


3.給您的模擬服務器起一個名字,選擇是否要讓這個服務器是私人的(如果是私人的,您需要在Header中添加x-api-key= Postman API key),選擇是否要配置一個延遲模擬響應(例如模擬 2G/3G 網路或指定自定義延遲)。取得Postman API Key可以參考這裡


4.點擊「Create Mock Server」。Postman 就會顯示您使用模擬所需的詳細信息,包括Mock server的 URL。



5.點選左上角的Collections,Postman已經將第2步驟設定的 request添加進Collections內了。這裡您可以設定一個或是多個request和 對應的response(如果您需要讓 API 收到不同的參數而給不同的Reapose)。例如,如果您要模擬一個返回用戶資料的 JSON 格式響應,可以填寫如下:
{
"name": "Alice",
"age": 25,
"gender": "female"
}

6.按下「Save」,示例就更新完成,可以測試了。

7.使用您的模擬 URL,您可以立即開始發出請求。例如,如果您的模擬 URL 是 https://2ea7ee58-3881-4e72-961f-5c6ec20~~.mock.pstmn.io,那麼您可以發出 https://2ea7ee58-3881-4e72-961f-5c6ec20~~.mock.pstmn.io/getUser 這個請求,並收到您設定的示例響應。


網址參數設定:


可以針對不同的網址參數來做設定,就可以用來模擬分頁的功能。
點選左上角的Collections,點選之前建立的request 旁的『...』按鍵  ,選擇『Add example』建立新的example。設定參數與Response資料。然後儲存起來就是一個可以測試的API了。
先設定page1:

再設定Page2:

各自執行API就會顯示對應頁面的資訊。如果回應連結還有套上Mock API url的話在page1點選links 裡面 "next"的url會跳至page2,在page2點選links 裡面"first"的url會跳至page1。

除了參數與回應可以設定外還可以模擬錯誤回傳如回應時status code不等於200(Success)。
在新的example內點選headers 設定一組key為x-mock-response-code value=400的回傳值。儲存起來。

執行這組example就會得到Status為400 Bad Request及對應的回應。

Response給隨機資料:


Postman 本身就有提供給隨機資料的參數,主要在 example response 那邊把固定值改填參數就行。
隨機參數可以參考Postman的Dynamic variables文件。postman給的隨機參數資料為:
{
"name":"{{$randomFullName}}",
"userName":"{{$randomUserName}}",
"location":"{{$randomCity}}",
"company":"{{$randomCompanyName}}",
"jobTitle":"{{$randomJobTitle}}",
"updatedAt":"{{$timestamp}}"
}
將其此設定放到Example的Response回應中定儲存起來。

執行此Mock API就會得到下面的結果

設定Mock Server為私有的(Private)

如果Mock Server沒有設定為Private時,這個mock server 的 url 都是公開的。如果想要都一點安全防護的話可以將Mock Server設定為Private(私有的)。
可以從建立時勾選make mock server private外。也可以去編輯並選擇建立好的Mock Server。如下圖

進入選擇的會出現此Mock Server的log。在點選右上角的Edit Configuration鍵。

進入設定頁面時勾選Make mock server private並按下Update Mock Server鍵將設定儲存下來。

變成私有的Mock Server後所有 request 都需要Postman API Key,所以可以把它加入到 Environment,變數名稱為『x-api-key』。然後在Request的 Headers 的TAB下加入『x-api-key』這個參數並將環境變數 {{x-api-key}}設定為值。按下Send鍵就會得到正確的回傳值。

沒有設定的話就會出現就會出現認證錯誤的回傳



參考資訊:


Postman之AI助理 Postbot

 我們在Postman會寫測試CODE來測試API。現在Postman搭上了AI列車推出了Postbot,使用Postbot可以幫助你更快地編寫測試Code,大幅提昇 API 測試的開發效率。


Postbot 目前可以
1.為集合產生測試,Postbot提供了一種透過幾個簡單步驟為整個集合產生測試的方法。
2.快速修復任何損壞的測試,Postbot 將幫助您快速修復任何失敗測試中的語法或結構錯誤。
3.直覺的提示和改進的性能,現在可以嘗試要求 Postbot 產生自訂視覺化或修復特定測試,您會發現更好的結果。
4.Writing FQL(Flows Query Language) in Postman Flows

如何使用Postbot:

快速為Collection生成測試Code:

1.點選最上層Collection旁的『...』鍵會出現一堆選項,選擇『Generate tests』項目(現在為beta版)。如下方圖示:


2.點選完『Generate tests』選項後會出現此集合下所有的Requests的測試項目。如果沒有測試項目就會出現『No Tests』。此時可以點選右上角紫色的『Generate tests』按鍵。




3.點選『Generate tests』按鍵後,Postbot會將每個Request送出並陸續地將測試Code產出。產出完所有的測試Code後可以按下右上角的『Save tests』鍵將所有的測試Code儲存起來。


快速為Request生成測試Code:

1.進入到某一個Request中點選Tests,然後右邊會出現個 Script with Postbot



2.點選Script with Postbot 下方會出現一個對話框。在這裡可以點選下方幾個選項或是自行輸入一些提示(Prompt),例如點選Add tests to this request 這個選項卡,這樣就會自動產生測試Code了。


3.產出測試Code前需要先發出Http Request,並且得到回應Postbot才會幫你撰寫產出測試案例。
例如





自行輸入提示(prompts)

1.也可以自行輸入你的需求,Postbot也會回應你的需求。但是最好是輸入英文啦,它目前好像看不懂中文。
例如 : Can you tell me how to use Postman Flows works?

2.還可以問後續的問題
例如: Do you have some example Flows I can see


產出視覺化的回應資料

Postbot還可以將Request回應的資料視覺化例如是表格化、圖表化。
1.點選 Visualize response.... 這個選項卡會出現下一層的選項卡,如果要表格化的話按下...as table這個選項卡後神奇的事情出現了......

2.Postbot會將回應的json資料轉化成表格資料顯示出來。





參考資訊:

(使用 Postman 進行 API 測試的幾個開發小技巧)