Postman+Newman的接口自动化测试是设计-执行-反馈的流程。Postman在用例设计上的易用性和Newman在命令行执行、不断集成上的强大能力。
第一步:环境搭建
先需要安装必要的工具:
安装 Node.js 和 npm:Newman 依赖 Node.js 环境,请从 Node.js 官网 下载 LTS 版本并安装。
安装 Newman:通过 npm 全局安装 Newman。
bash
npm install -g newman
可选安装 HTML 报告插件:为了生成更直观的 HTML 测试报告。
bash
npm install -g newman-reporter-html
测试安装:运行以下命令,如果显示版本号则说明安装成功。
bash
newman -v
第二步:设计Postman测试用例
组织测试集合 (Collection):按功能模块(如用户管理、订单系统)划分Collection,内部可用Folder区分正向/反向用例。
编写请求和断言:在请求的 Tests标签页中使用JavaScript编写断言。
状态码断言:pm.test("Status code is 200", function() { pm.response.to.have.status(200); });
响应体断言:pm.test("Response contains access_token", function() { var jsonData = pm.response.json(); pm.expect(jsonData).to.have.property('access_token'); });
响应时间断言:pm.test("Response time is less than 200ms", function() { pm.expect(pm.response.responseTime).to.be.below(200); });
管理环境变量:通过环境变量(如 {{base_url}})管理不同环境(开发/测试/生产)的配置。
实现数据驱动:将测试数据外部化为CSV或JSON文件,在Collection Runner或Newman中导入,实现同一套脚本多组数据测试。
完成设计后,将 Collection 和环境变量导出为JSON文件,这是Newman执行的输入。
第三步:Newman自动化执行
通过 Newman 命令,可以在命令行中运行测试。
基础运行:newman run <集合文件途径>.json
指定环境:newman run <集合文件途径>.json -e <环境文件途径>.json
数据驱动:newman run <集合文件途径>.json -d <数据文件途径>.csv
生成 HTML 报告:newman run <集合文件途径>.json -r html --reporter-html-export <报告输出途径>.html
组合命令示例:
bash
newman run order_api.json -e test_env.json -d order_data.csv -r htmlextra,junit --reporter-htmlextra-export report.html --bail
第四步:Jenkins, GitLab CI, GitHub Actions的CI/CD 集成
将Newman命令集成到CI/CD流水线中。
Jenkins:在 Jenkins 任务中,添加一个执行 Shell 脚本的创建步骤,运行 Newman 命令。还可通过 --reporters junit生成 JUnit格式报告,供Jenkins插件分析和展示。
GitLab CI:在 .gitlab-ci.yml 文件中定义测试 job,安装 Newman 并执行。
GitHub Actions:在 .github/workflows/*.yml 文件中定义 workflow,安装 Newman 并执行。
CI流程一般配置为在代码提交时自动触发,一旦测试失败,即可阻断部署,保证质量门禁。
第五步:报告和通知
测试报告:Newman 支持生成 HTML、JSON、JUnit XML 等多种格式的报告。
可视化和通知:JSON 格式报告可用于数据可视化。同时,可配置当监控的重点接口异常时,通过 Slack、邮件 等方式发送告警通知。
实践
代码化和版本控制:将 Postman 导出的 JSON 文件(Collection、Environment)和测试数据文件(CSV/JSON)一同提交至 Git 仓库,实现版本管理。
测试分层和聚焦:按功能模块组织 Collection,每个测试脚本只测试一个具体行为。
参数化和数据驱动:尽量避免硬编码,利用环境变量和数据文件提高脚本的可维护性和复用性。
完善的断言:除了状态码,应对重点业务字段、响应结构、响应时间等进行全面断言。
错误处理和调试:利用 --bail 参数在首个失败用例时结束执行,快速定位问题。
独立的环境:为开发、测试、生产等环境维护独立的 Environment 文件。
集成质量门禁:在CI管道中,将测试结果作为部署的前提条件。