🐸 青蛙编程网
首页 / 开发工具 / Postman / 5. 断言与自动化测试

5. 断言与自动化测试

这是什么:Tests = 每个请求自带的响应后脚本(Post-response script),响应回来后自动执行;脚本里写的「结果必须如此」就是断言(Assertion,自动检查对错的代码)。

为什么用:人肉盯状态码又慢又漏——几十个接口谁盯得过来?断言是你雇的验收员:一次写好,每按一次 Send 都自动验收,绿勾过、红叉挂,交给电脑不交给眼睛。

如何用:先给第 4 章的集合写两条最常用的断言跑绿,再用 Collection Runner 批量跑全集合,最后认识一句话的 Newman(命令行、CI 的入口)。

5.1 写两条最常用的断言

打开集合里「拿一篇文章」这个请求,切到 Scripts 标签下的 Post-response 区(老版本里它叫 Tests,名字不同、位置就在「响应之后」),写入:

pm.test("状态码是 200", function () {
  pm.response.to.have.status(200);
});

pm.test("id 字段等于 1", function () {
  const json = pm.response.json();
  pm.expect(json.id).to.eql(1);
});

点 Send,响应区的脚本结果栏会出现:

✓ 状态码是 200
✓ id 字段等于 1

2/2 Passed
代码 作用
pm.test(名字, function) 注册一条断言,名字随你起——它就是失败时喊的话
pm.response.to.have.status(200) 要求状态码必须是 200
pm.response.json() 把响应体解析成对象,好取字段
pm.expect(json.id).to.eql(1) 要求该值严格等于 1(eql = 深度相等)

5.2 保存后自动验证

脚本随请求保存,以后每按一次 Send 都自动跑一遍,不用再管。把它调教出「挂在眼前」的效果:故意把 .to.eql(1) 改成 .to.eql(999),Send——红叉当场出现。你修好了吗?改回来,又全绿。接口挂没挂,从此电脑说了算。

5.3 Collection Runner:批量一把梭

单请求断言会了,就能批量验收整个集合:

  1. 左侧 Collections 里「文章接口」上点 … → Run collection(或打开右侧栏的 Runner 拖入集合)
  2. 确认环境选好、请求都勾上,点 Run 文章接口
  3. 每个请求跑出一行结果

你会看到:

文章接口  ·  3 requests, 3 passed, 0 failed
✓ 拿文章列表    200 OK
✓ 拿一篇文章    200 OK
✓ 发一篇文章    201 Created

哪条红了直接点开看,断言名字就是你当初起的「报错喊话」。给每个请求都配上断言,这个界面就是你的接口健康体检报告。

5.4 Newman:让命令行来跑(一句话版)

Newman 是 Postman 官方的命令行 Runner——把集合导出成 .postman_collection.json,然后:

npx newman run 文章接口.postman_collection.json

不打开窗口也能跑全集合,是把它接进 CI(Continuous Integration,持续集成——代码一提交就自动跑测试的流水线)的入口。入门阶段知道有这扇门即可,第 6 章先在窗口里把活干漂亮。

记忆口诀:断言两板斧:status 看码、eql 看值;保存 Send 自动跑,Runner 一把梭,红绿就是验收单。

5.5 动手改

  1. 给「发一篇文章」加一条断言:状态码必须是 201
  2. 写一条断言验证 POST 响应里的 title 正是你发送的那个字符串(用 pm.expect(json.title).to.eql("青蛙的文章"))
  3. 把任意一条断言故意改错,跑一遍 Runner,观察失败在报告里长什么样

5.6 小结

  • Tests = 响应后自动跑的脚本,断言两句版:to.have.status(200)、pm.expect(x).to.eql(1)
  • 保存即生效,每次 Send 自动验收
  • Collection Runner 批量跑集合;Newman 命令行跑集合、接 CI

下一章:综合练习:调通一组 CRUD 接口 🐸

📥 下载本章代码

ZIP 内含本章全部代码文件与说明,解压即用,与教程内容同步生成。