Postman 編寫測試

2023-04-04 10:29 更新

測試確認(rèn)您的 API 按預(yù)期工作,服務(wù)之間的集成可靠地運(yùn)行,并且任何更改都沒有破壞現(xiàn)有功能。您可以使用 JavaScript 為 Postman API 請求編寫測試腳本。當(dāng)您的 API 項(xiàng)目出現(xiàn)問題時(shí),您還可以使用測試代碼來幫助調(diào)試過程。例如,您可能會(huì)編寫一個(gè)測試,通過發(fā)送包含不完整數(shù)據(jù)或錯(cuò)誤參數(shù)的請求來驗(yàn)證 API 的錯(cuò)誤處理。

添加測試

您可以將測試添加到單個(gè)請求、集合和集合中的文件夾。Postman 包括您添加的代碼片段,然后更改以適合您的測試邏輯。

要向請求添加測試,請打開請求并在“測試”選項(xiàng)卡中輸入您的代碼。測試將在請求運(yùn)行后執(zhí)行。輸出位于響應(yīng)的“測試結(jié)果”選項(xiàng)卡中。

請求測試標(biāo)簽

向 gRPC 請求添加測試

  1. 轉(zhuǎn)到gRPC 請求中的腳本選項(xiàng)卡。
  2. 選擇要向其添加測試的執(zhí)行掛鉤(調(diào)用前或響應(yīng)后)。
  3. 使用右側(cè)窗格中的片段添加測試或編寫自定義斷言。

無論方法類型是一元、客戶端流、服務(wù)器流還是雙向流,這兩個(gè)執(zhí)行掛鉤都可用于所有 gRPC 請求。您的腳本可以包含您需要的任意多個(gè)測試,并且在您選擇Save時(shí)將與您的請求的其余部分一起保存。

當(dāng)您選擇Invoke時(shí),將在調(diào)用請求之前或之后運(yùn)行測試。如果您選擇Cancel,請求執(zhí)行和任何進(jìn)一步的腳本執(zhí)行。

如果您的 Before invoke 腳本中有任何錯(cuò)誤,它將停止請求執(zhí)行。

編寫測試腳本

測試腳本可以使用動(dòng)態(tài)變量,對響應(yīng)數(shù)據(jù)執(zhí)行測試斷言,并在請求之間傳遞數(shù)據(jù)。在請求的“測試”選項(xiàng)卡中,手動(dòng)輸入您的 JavaScript 或選擇代碼編輯器旁邊的“片段” 。

收到響應(yīng)后執(zhí)行測試。當(dāng)您選擇Send時(shí),Postman 在響應(yīng)數(shù)據(jù)從 API 返回后運(yùn)行您的測試腳本。

如果您需要在請求運(yùn)行之前執(zhí)行代碼,請改用預(yù)請求腳本。有關(guān)腳本在請求運(yùn)行時(shí)如何執(zhí)行的更多信息,請參閱腳本簡介。

驗(yàn)證響應(yīng)

要驗(yàn)證請求返回的數(shù)據(jù),您可以pm.response在測試中使用該對象。使用函數(shù)定義測試pm.test,提供名稱和返回布爾值(true或false)的函數(shù),該值指示測試是通過還是失敗。使用ChaiJS BDD語法并pm.expect在您的斷言中測試響應(yīng)細(xì)節(jié)。

該.test函數(shù)的第一個(gè)參數(shù)是將出現(xiàn)在測試結(jié)果輸出中的文本字符串。使用它來識(shí)別您的測試,并將測試的目的傳達(dá)給查看結(jié)果的任何人。

例如,在請求的“測試”200選項(xiàng)卡中輸入以下內(nèi)容以測試響應(yīng)狀態(tài)代碼是否為:

pm.test("Status test", function () {
    pm.response.to.have.status(200);
});

選擇發(fā)送以運(yùn)行您的請求并在響應(yīng)部分打開測試結(jié)果。選項(xiàng)卡標(biāo)題顯示通過了多少測試以及總共運(yùn)行了多少測試。您還可以查看Passed、Skipped和Failed測試結(jié)果的數(shù)量。

如果請求返回200狀態(tài)代碼,則測試通過。要了解不同狀態(tài)代碼會(huì)發(fā)生什么情況,請更改測試腳本中的預(yù)期狀態(tài)代碼并再次運(yùn)行請求。

使用 pm.expect 格式化測試結(jié)果消息

使用pm.expect語法為您的測試結(jié)果消息提供不同的格式。試驗(yàn)替代方案以獲得您認(rèn)為最有用的輸出。

使用Intro to writing tests 集合中的Run in Postman按鈕將包含一些示例測試腳本的模板導(dǎo)入 Postman 并試驗(yàn)代碼。

您的代碼可以測試請求環(huán)境,如下例所示:

pm.test("environment to be production", function () {
    pm.expect(pm.environment.get("env")).to.equal("production");
});

您可以使用不同的語法變體以您認(rèn)為可讀且適合您的應(yīng)用程序和測試邏輯的方式編寫測試。

pm.test("response should be okay to process", function () {
    pm.response.to.not.be.error;
    pm.response.to.have.jsonBody("");
    pm.response.to.not.have.jsonBody("error");
});

您的測試可以使用您為響應(yīng)數(shù)據(jù)格式定制的語法來確定請求響應(yīng)的有效性。

pm.test("response must be valid and have a body", function () {
     pm.response.to.be.ok;
     pm.response.to.be.withBody;
     pm.response.to.be.json;
});

您的腳本可以包含您需要的任意多個(gè)測試,并且在您選擇Save時(shí)將與其余的請求詳細(xì)信息一起保存。如果您共享集合、發(fā)布文檔或使用“在 Postman 中運(yùn)行”按鈕,您的測試代碼將包含在任何查看或?qū)肽哪0宓娜酥小?/p>

使用片段

您可以使用精選的常用測試代碼片段列表來編寫測試。片段在腳本編輯器的右窗格中可用。選擇一個(gè)片段會(huì)自動(dòng)將所需的代碼添加到您的腳本中,幫助您快速開始測試。添加到腳本后,您可以編輯片段以滿足您的特定測試要求。

測試集合和文件夾

您可以將測試腳本添加到集合、文件夾或集合中的單個(gè)請求。與集合關(guān)聯(lián)的測試腳本將在集合中的每個(gè)請求之后運(yùn)行。與文件夾關(guān)聯(lián)的測試腳本將在文件夾中的每個(gè)直接子請求之后運(yùn)行。這使您能夠在請求后重用通常執(zhí)行的測試。每個(gè)請求的執(zhí)行順序?qū)⑹鞘占瘻y試,文件夾測試,然后是請求測試。

將腳本添加到集合和文件夾使您能夠測試 API 項(xiàng)目中的工作流。這有助于確保您的請求涵蓋典型場景,為應(yīng)用程序用戶提供可靠的體驗(yàn)。

更多操作圖標(biāo) 您可以通過選擇集合或文件夾名稱旁邊的查看更多操作圖標(biāo) ,然后選擇編輯來更新集合和文件夾腳本。選擇“測試”選項(xiàng)卡以添加或更新您的腳本。您還可以在首次創(chuàng)建集合時(shí)添加集合腳本。

當(dāng)您運(yùn)行一個(gè)集合時(shí),集合運(yùn)行器會(huì)顯示測試結(jié)果,包括以毫秒為單位的響應(yīng)時(shí)間以及有關(guān)集合中的特定請求是通過還是未通過其測試的詳細(xì)信息。

收集測試

您可以使用分支和循環(huán)編寫腳本來控制請求的運(yùn)行順序。

調(diào)試測試

如果您在測試時(shí)遇到問題:

  • 檢查腳本中是否有任何錯(cuò)誤。紅色徽章將突出顯示有錯(cuò)誤的腳本。您還可以檢查響應(yīng)部分是否存在特定錯(cuò)誤。
  • 使用日志語句調(diào)試您的測試,以確保您斷言正確的數(shù)據(jù)。

下一步

在 Postman 中編寫測試后,您可以編寫更復(fù)雜的測試并將它們與其他 Postman 實(shí)用程序一起使用。

  • 有關(guān)您可以使用該pm對象執(zhí)行的操作的更多信息,請查看一些測試腳本示例并訪問Postman Sandbox API 參考。
  • 要了解如何結(jié)合使用測試和監(jiān)控來確認(rèn)您的 API 是否滿足性能要求,請?jiān)L問監(jiān)控您的 API。
  • 要了解如何通過在 CI/CD 配置中集成集合運(yùn)行來自動(dòng)化測試,請?jiān)L問與 Travis CI 集成


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號