当前位置: 首页 > news >正文

postman写断言(assert)

  • Postman 的断言写在请求页签底部的Tests​ 中,基于pm.test()+pm.expect()(基于 Chai.js BDD 风格)语法。
  • 断言的结果显示在下方的响应页签的 Test Results中
  • pm=postman的缩写
  • 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 200Response body: JSON value check等可自动插入模板,改改字段名就能用

http://www.jsqmd.com/news/1138567/

相关文章:

  • 电脑的安装与卸载
  • 本地部署AI生图与视频生成:免费开源工具实战指南
  • RAG 重排序观测性:召回多不代表答案稳
  • 2026上半年Java面试真题汇总!
  • 终极Sketch设计转代码指南:用Marketch插件5步实现自动化HTML生成
  • 轮转数组三重解法精讲
  • 短剧译制成本结构横评:5款工具的翻译/配音/字幕费用占比
  • 怎样高效配置专业代码字体:提升开发体验的现代方案
  • 【SkyWalking从入门到精通】第09篇:SkyWalking安装全攻略——5分钟跑起来你的第一个APM系统
  • 题解:AcWing 1277 维护序列
  • 轻盈美学合规选品:机构与代理商应关注哪些方面
  • OPC公司如何提出好问题——在AI时代,“提问能力”是你唯一不可替代的竞争力
  • AI驱动的证券智能分析平台:架构设计与工程实践
  • d2s-editor:革新暗黑破坏神2存档编辑体验的可视化工具
  • YOLOv8猫狗品种识别检测系统(项目源码+YOLO数据集+模型权重+UI界面+python+深度学习+环境配置+目标检测)
  • Wan Video音乐伴舞功能:AI视频编辑与节奏分析技术详解
  • 百变互动-数字展厅沉浸式体验与视觉效果全解析
  • 五新智能:以成套智能装备赋能全球工程建设
  • 数字记忆守护者:WeChatMsg让你的微信聊天记录永久留存
  • 正规电商页面内嵌支付钓鱼攻击机理与全域协同防御研究
  • 如何快速构建企业级Vue3后台系统:Element-Plus-Admin完整实战指南
  • 电脑C盘智能清理软件5.0一键扫描清理各类垃圾文件,让您的电脑运行更流畅
  • 猫抓Cat-Catch技术深度解密:浏览器资源嗅探扩展的性能飞跃实战指南
  • TJWZ 津卫云传|公安多分区跨网文件安全摆渡解决方案发布
  • 批量译制成本测算:量大采购下的单位成本与套餐模型
  • 新能源工程师培训哪家好?2026 光伏储能入行避坑深度解析
  • 终极教程:为qBittorrent安装搜索插件,一站式搞定种子搜索
  • 生成式 AI 驱动新型网络钓鱼攻击技术路径与全域防御体系研究
  • 机械设计形位公差避坑:5个常见标注误区与基于加工测量的基准统一原则
  • Windows取得所有权