Ubuntu 上使用 Postman 与 Newman 的自动化测试实践
一 环境准备与安装
- 安装 Postman(任选其一)
- Snap:sudo snap install postman --classic
- APT:导入 GPG 并添加仓库后安装
- wget -qO - https://dl.postman.co/postman.gpg | sudo apt-key add -
- echo “deb https://dl.postman.co/debian $(lsb_release -cs) main” | sudo tee /etc/apt/sources.list.d/postman.list
- sudo apt update && sudo apt install postman
- Flatpak:
- sudo apt update && sudo apt install flatpak
- flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
- flatpak install flathub com.postman.Postman
- 安装 Newman(Postman 命令行运行器)
- npm install -g newman
- 验证:newman -h
- 说明:Postman 提供图形化界面用于构建与调试用例,Newman 负责在命令行与 CI 环境中批量运行与集成
二 构建第一个自动化测试用例
- 创建请求
- 新建请求,选择方法(如 GET/POST),填写 URL,按需设置 Headers/Body/Auth。
- 添加测试脚本(Tests)
- 断言状态码:
- pm.test(“状态码为200”, () => pm.response.to.have.status(200));
- 断言响应体字段:
- const jsonData = pm.response.json();
pm.test(“返回的用户姓名正确”, () => pm.expect(jsonData.name).to.eql(“test_user”));
- 组织与运行
- 将请求保存到 Collection,使用 Collection Runner 批量运行并查看结果
- 说明:Tests 中的断言会在请求返回后自动执行,适合做结果校验与回归测试
三 变量环境与数据驱动
- 环境变量与全局变量
- 在环境/全局中定义如 baseUrl、token,在请求中使用 {{baseUrl}}、{{token}} 引用
- 在脚本中读写:
- const token = pm.environment.get(“token”);
- pm.environment.set(“token”, “new-token”);
- 预请求脚本(Pre-request Script)
- 常用于动态生成签名、时间戳、设置 Authorization 头:
- pm.request.headers.add({ key: “Authorization”, value: "Bearer " + pm.environment.get(“token”) });
- 数据驱动(Data Files)
- 使用 CSV/JSON 数据文件进行多组用例参数化,Newman 通过 --data 参数加载数据文件批量运行
- 说明:变量与环境让同一套集合可在 开发/测试/生产 环境复用,数据与脚本分离便于维护与扩展
四 命令行运行与报告输出
- 基本运行
- newman run <collection.json> -e <environment.json>
- 常用选项
- 迭代次数:–iteration-count N
- 数据文件:–data data.json 或 --data data.csv
- 报告:
- CLI 与 JUnit:–reporters cli,junit --reporter-junit-export report.xml
- HTML 报告:–reporters html --reporter-html-export report.html
- 示例
- newman run collection.json -e dev.env.json --data users.csv --reporters cli,junit,html --reporter-junit-export report.xml --reporter-html-export report.html
- 说明:报告可用于可视化与质量门禁,JUnit 报告便于在 CI 中展示与归档
五 CI/CD 集成示例
- GitHub Actions
- name: Run Postman API Tests
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
api-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ‘18’
- run: npm install -g newman
- run: >
newman run collection.json
-e environment.json
–reporters cli,junit
–reporter-junit-export report.xml
- uses: actions/upload-artifact@v4
with:
name: postman-report
path: report.xml
- Jenkins
- 在构建步骤执行 Shell:
- newman run /path/to/collection.json -e /path/to/env.json --reporters cli,junit --reporter-junit-export report.xml
- 实践要点
- 将 集合与环境 纳入版本控制;使用 Secrets 管理敏感信息(如 token、密码)
- 在流水线中设置质量门禁(如非 0 退出码即失败),并归档 JUnit/HTML 报告以便回溯