Linux中Postman進行斷言的詳細指南
斷言是API測試的核心環節,用于驗證接口響應是否符合預期(如狀態碼、響應體內容、響應時間等)。Postman通過Tests標簽頁提供的JavaScript API支持靈活的斷言編寫,以下是具體操作流程與常見斷言類型:
pm.test()方法和pm.expect()斷言庫編寫驗證邏輯(支持舊版tests[]語法,但新版更推薦)。驗證響應狀態碼是否符合預期(如200表示成功、404表示未找到)。
pm.test("Status code is 200", function () {
pm.response.to.have.status(200); // 新版語法
// 或舊版:tests['Status code is 200'] = pm.response.code === 200;
});
驗證響應體是否包含/等于指定字符串(適用于文本格式響應)。
// 斷言響應體包含特定字符串
pm.test("Body contains 'success'", function () {
pm.expect(pm.response.text()).to.include("success");
});
// 斷言響應體完全等于指定字符串
pm.test("Body is exactly 'Hello World'", function () {
pm.response.to.have.body("Hello World");
});
解析JSON響應并驗證字段值(適用于RESTful API常見格式)。
pm.test("JSON field 'name' is 'John'", function () {
var jsonData = pm.response.json(); // 解析JSON響應
pm.expect(jsonData.name).to.eql("John"); // 新版:嚴格等于
// 或舊版:tests['name is John'] = jsonData.name === "John";
});
// 斷言JSON字段是否存在
pm.test("JSON has 'id' field", function () {
var jsonData = pm.response.json();
pm.expect(jsonData).to.have.property('id');
});
驗證響應頭是否包含特定字段(如Content-Type)。
pm.test("Content-Type header is present", function () {
pm.expect(pm.response.headers.get('Content-Type')).to.eql('application/json; charset=utf-8');
});
驗證響應時間是否在預期范圍內(如小于200ms)。
pm.test("Response time is less than 200ms", function () {
pm.expect(pm.response.responseTime).to.be.below(200);
});
pm.test()+pm.expect()語法(更直觀、易維護),舊版tests[]語法僅支持簡單布爾判斷。通過以上步驟,可在Linux系統的Postman中高效完成API斷言,確保接口響應符合業務需求。