Postman使用學習

使用變量

通過將值存儲在變量中,可以在整個集合、環(huán)境和請求中引用它,如果需要更新該值,只需在一個地方更改它。
Postman 支持以下變量范圍:
Global
Collection
Environment
Data
Local


image.png

如果在兩個不同的作用域中聲明了同名變量,則使用作用域最窄的變量中存儲的值——例如,如果有一個Globa變量和一個Local變量都命名為username,則在請求時將使用Local變量運行。

  • 全局變量允許您訪問集合、請求、測試腳本和環(huán)境之間的數據。全局變量在整個工作區(qū)中都可用。
    由于全局變量會造成混淆,因此您應該只謹慎使用它們——例如,快速測試某些東西或當您的項目處于非常早期的原型設計階段時。*
  • 集合變量在集合中的整個請求中都可用,并且與環(huán)境無關,因此不要根據所選環(huán)境進行更改。
    如果您僅使用單個環(huán)境,則集合變量是合適的,例如用于身份驗證 / URL 詳細信息。*
  • 環(huán)境變量允許您針對不同環(huán)境定制處理,例如本地開發(fā)與測試或生產。一次只能激活一個環(huán)境。
    如果您只有一個環(huán)境,使用集合變量會更有效率,但是環(huán)境允許您指定基于角色的訪問級別。
  • 局部變量是臨時的,只能在您的請求腳本中訪問。局部變量值僅限于單個請求或集合運行,并且在運行完成后不再可用。
    如果您需要一個值來覆蓋所有其他變量范圍,但不希望該值在執(zhí)行結束后持續(xù)存在,則局部變量是合適的。
    數據變量來自外部 CSV 和 JSON 文件,用于定義在通過 Newman 或 Collection Runner 運行集合時可以使用的數據集。

在腳本中定義變量:

pm.globals.set("variable_key", "variable_value");
pm.collectionVariables.set("variable_key", "variable_value");
pm.environment.set("variable_key", "variable_value");
pm.variables.set("variable_key", "variable_value");

在腳本中使用變量:

//access a variable at any scope including local
pm.variables.get("variable_key");
//access a global variable
pm.globals.get("variable_key");
//access a collection variable
pm.collectionVariables.get("variable_key");
//access an environment variable
pm.environment.get("variable_key");

訪問變量:
{{username}}
如果變量未解析,Postman 會將其突出顯示為紅色。

使用動態(tài)變量
動態(tài)變量的例子如下:

{{$guid}} :一個 v4 風格的guid
{{$timestamp}}: 當前時間戳(以秒為單位的 Unix 時間戳)
{{$randomInt}}: 0 到 1000 之間的隨機整數
const stringWithVars = pm.variables.replaceIn("Hi, my name is {{$randomInt}}");

共享和持久化數據
創(chuàng)建或編輯變量時,您可以輸入初始值和當前值。在 UI 中創(chuàng)建新變量時,如果將當前值留空,它將自動填充初始值。如果您指定一個當前值,它將僅對您的實例是本地的——Persist選項允許您將當前值推送到共享數據,更新初始值以匹配當前值。

編寫腳本

您可以添加 JavaScript 代碼以在流中的 2 個事件期間執(zhí)行:

  1. 在將請求發(fā)送到服務器之前,作為預請求腳本選項卡下的預請求腳本。
  2. 收到響應后,作為測試選項卡下的測試腳本。

腳本執(zhí)行順序:
在 Postman 中,單個請求的腳本執(zhí)行順序如下所示:

  • 與請求關聯(lián)的預請求腳本將在請求發(fā)送之前執(zhí)行
  • 與請求關聯(lián)的測試腳本將在請求發(fā)送后執(zhí)行

對于集合中的每個請求,腳本將按以下順序執(zhí)行:

  • 與集合關聯(lián)的預請求腳本將在集合中的每個請求之前運行。
  • 與文件夾關聯(lián)的預請求腳本將在文件夾中的每個請求之前運行。
  • 與集合關聯(lián)的測試腳本將在集合中的每個請求之后運行。
  • 與文件夾關聯(lián)的測試腳本將根據文件夾中的請求運行。

編寫預請求腳本

您可以在 Postman 中使用預請求腳本在請求運行之前執(zhí)行 JavaScript。通過在請求、集合或文件夾的Pre-request Script選項卡中包含代碼,您可以執(zhí)行預處理,例如設置變量值、參數、標頭和正文數據。您還可以使用預請求腳本來調試代碼,例如通過將輸出記錄到控制臺。

請求前腳本的示例用法如下:

  • 您在集合中有一系列請求并按順序運行它們,例如使用集合運行器
  • 第二個請求取決于從第一個請求返回的值。
  • 該值需要在您將其傳遞給第二個請求之前進行處理。
  • 第一個請求將響應字段中的數據值設置為其測試腳本中的變量。
  • 第二個請求檢索該值并在其Pre-request Script 中處理它,然后將處理后的值設置為變量(在第二個請求中引用,例如在其參數中)。

腳本工具流:
在此之后運行指定的請求(集合中定義的請求名稱,例如“獲取客戶”):

postman.setNextRequest(requestName:String):Function

在此之后運行指定的請求(由 返回的請求 ID pm.info.requestId):

postman.setNextRequest(requestId:String):Function
//script in another request calls:
//pm.environment.set('next', pm.info.requestId)
postman.setNextRequest(pm.environment.get('next'));

編寫測試斷言:

您可以為每個請求添加所需的任意數量的測試。
您的測試可以包含多個斷言作為單個測試的一部分——您可以使用它來將相關斷言組合在一起。

pm.test("The response has all properties", () => {
    //parse the response json and test three properties
    const responseJson = pm.response.json();
    pm.expect(responseJson.type).to.eql('vip');
    pm.expect(responseJson.name).to.be.a('string');
    pm.expect(responseJson.id).to.have.lengthOf(1);
});

您可以將測試腳本添加到集合、文件夾或集合中的單個請求。與集合關聯(lián)的測試腳本將在集合中的每個請求之后運行。與文件夾關聯(lián)的測試腳本將在文件夾中的每個請求之后運行。這允許您在每次請求后重用常用的測試。

測試響應體

您可以檢查響應正文中的特定值:

pm.test("Person is Jane", () => {
  const responseJson = pm.response.json();
  pm.expect(responseJson.name).to.eql("Jane");
  pm.expect(responseJson.age).to.eql(23);
});

測試狀態(tài)碼

您可以測試響應狀態(tài)代碼:

pm.test("Status code is 201", () => {
  pm.response.to.have.status(201);
});

如果您想測試狀態(tài)代碼是否為一組,您可以將它們全部包含在一個數組中并使用oneOf

pm.test("Successful POST request", () => {
  pm.expect(pm.response.code).to.be.oneOf([201,202]);
});

您還可以檢查狀態(tài)代碼文本:

pm.test("Status code name has string", () => {
  pm.response.to.have.status("Created");
});

測試響應時間
您可以測試響應時間是否在指定范圍內:

pm.test("Response time is less than 200ms", () => {
  pm.expect(pm.response.responseTime).to.be.below(200);
});

使用集合運行器

  • 每個請求之間的間隔延遲(毫秒)。
  • 一個數據文件,用于收集運行。
  • 將響應保存到日志將允許您查看它們,但可能會影響性能。
  • 持久變量意味著運行更新的任何變量在運行之后將保持更改。如果不持久化變量,運行完成后將不會保存更改。請注意,集合運行中的持久變量將僅更新當前值。
  • 如果您的請求使用 cookie,您可以選擇在收集運行中禁用它們。
  • 保存 cookie 意味著在運行期間受請求影響的任何值將在它完成后保留。

設置接下來要執(zhí)行的請求:

postman.setNextRequest("request_name");

循環(huán)當前請求:

提供當前運行的名稱setNextRequest會導致 Postman 連續(xù)運行當前請求。
注意:在連續(xù)循環(huán)一個請求時,應該包裝setNextRequest一些邏輯以確保請求不會無限期地運行,否則收集運行器將需要強制關閉。
您可以使用數據文件傳遞 Postman 值集以在集合運行中使用。通過在 Collection Runner 中選擇 JSON 或 CSV 數據文件,您可以在單次運行中使用多個不同的值測試您的請求。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容