)
Postman 的断言写在请求页签底部的Tests 中基于pm.test()pm.expect()基于 Chai.js BDD 风格语法。断言的结果显示在下方的响应页签的 Test Results中pmpostman的缩写Chai.js是一个流行的JavaScript 断言库Assertion Library专门用于写测试用例中的预期判断本身不跑测试只负责帮你用接近自然语言的语法做断言判断一、理解什么是断言assert在编程和测试领域标准中文翻译就是「断言」assert 断言 “我认定这件事一定成立否则就是错误”在测试中它用来对比「实际结果」和「预期结果」是自动化测试的灵魂。英文assert本身是动词意思是断言 / 声称 / 坚决认为某事为真比如日常英语I assert that he is guilty.我断言他有罪。关键点在于说话者非常确定如果事实证明是错的那就是严重问题在代码里assert是一种对程序状态的硬性声明我断言这个条件一定成立如果不成立程序就直接报错。assert age 0 //如果 age 0程序立刻抛异常AssertionError在测试里assert的含义变成了我断言“实际结果”必须等于“预期结果”assert response.status_code 200 //我断言接口返回的状态码一定是 200 //如果不是测试失败二、状态码Status code断言// 精确匹配 pm.test(Status code is 200, function () { pm.response.to.have.status(200); //响应中有状态200 }); // 多个可选值如 POST 创建成功 pm.test(Successful POST, function () { pm.expect(pm.response.code).to.be.oneOf([201, 202]); //断言响应码是其中的一个[201,202] });三、响应体Body断言// 响应文本包含某字符串 pm.test(Body contains keyword, function () { pm.expect(pm.response.text()).to.include(success); //断言响应文本包含success字符串 }); // JSON 字段值精确匹配 var jsonData pm.response.json(); pm.test(code equals 0, function () { pm.expect(jsonData.code).to.eql(0); //断言JSON数据的code字段值等于0 }); // JSON 字段存在 pm.test(has data field, function () { pm.expect(jsonData).to.have.property(data); //断言JSON数据的中有data字段 //property 属性、字段 对应对象的键 / 字段 }); // 数组长度校验 pm.test(list length 0, function () { pm.expect(jsonData.list.length).to.be.above(0); //断言JSON数据的 list字段的长度即元素个数 在0之上即0 }); // 类型校验 pm.test(id is number, function () { pm.expect(jsonData.data.id).to.be.a(number); //断言JSON数据的 data字段下的 id 字段是一个number类型即数字 });JSON中的{ }用.隔开[ ]用下标锁定四、响应头 / Cookie 断言// Header 存在 pm.test(Content-Type present, function () { pm.response.to.have.header(Content-Type); }); // Header 值包含 pm.test(is JSON, function () { pm.expect(pm.response.headers.get(Content-Type)).to.include(application/json); }); // Cookie 存在 pm.test(cookie exists, function () { pm.expect(pm.cookies.has(sessionId)).to.be.true; });参考文章HTTP协议-CSDN博客五、性能 / 其他断言// 响应时间低于阈值 pm.test(Response time 500ms, function () { pm.expect(pm.response.responseTime).to.be.below(500); }); // 与环境变量比对 pm.test(name matches env var, function () { pm.expect(jsonData.name).to.eql(pm.environment.get(expectedName)); });六、快速生成断言Postman Tests 面板右侧有SNIPPETS代码片段点击如Status code is 200、Response body: JSON value check等可自动插入模板改改字段名就能用