在 CentOS 中使用 Postman 进行数据驱动测试
一 环境准备与安装
- 下载并解压 Postman Linux 包(x64):
- 命令示例:sudo tar -xzf Postman-linux-x64-*.tar.gz -C /opt
- 创建软链便于启动:
- 命令示例:sudo ln -s /opt/Postman/Postman /usr/bin/postman
- 可选:将 Postman 目录加入 PATH,便于命令行直接执行。
- 如需在命令行批量运行与 CI,建议安装 Node.js 与 Newman:
- 命令示例:npm install -g newman
- 说明:Postman 图形界面在 CentOS 桌面环境可用;无界面或服务器场景建议直接使用 Newman。
二 数据文件与参数化
- 支持的数据文件格式:CSV、JSON。
- 示例 CSV(UTF-8 无 BOM,首行为列名,建议不要有空行):
- 文件内容:
- username,password
- user1,pass1
- user2,pass2
- 示例 JSON:
- 文件内容:
- [
{ “username”: “user1”, “password”: “pass1” },
{ “username”: “user2”, “password”: “pass2” }
]
- 参数化引用方式:
- 在请求参数、请求头、请求体中使用 {{变量名}} 引用数据列(如:{{username}}、{{password}})。
- 在 Tests/Pre-request Script 中通过 data.列名 读取当前行数据(如:data.username)。
三 在 Postman 图形界面运行数据驱动
- 创建集合(Collection)并添加请求,使用 {{变量名}} 完成参数化;在 Tests 中编写断言,例如:
- 断言状态码:
- pm.test(“Status code is 200”, () => pm.response.to.have.status(200));
- 断言响应字段与数据文件一致:
- pm.test(“Response contains expected data”, () => {
const jsonData = pm.response.json();
pm.expect(jsonData.username).to.eql(data.username);
});
- 打开 Collection Runner(Runner):
- 选择目标集合与环境;在 Data 处选择准备好的 CSV/JSON 数据文件,使用 Preview 预览确认解析无误。
- 迭代次数会自动与数据行数一致(CSV 首行为列名会被自动忽略);可设置 Delay(每次迭代间隔)与是否保存响应等选项。
- 点击 Start Run 执行,查看每个请求与断言结果。
四 在 CentOS 命令行批量运行 Newman
- 将集合导出为 JSON(例如:my-api-tests.json),准备数据文件(例如:data.csv)。
- 直接命令行运行示例:
- newman run my-api-tests.json --iteration-data data.csv
- 使用 Node 脚本运行(run-tests.js):
- 代码示例:
- const newman = require(‘newman’);
newman.run({
collection: ‘path/to/my-api-tests.json’,
iterationData: ‘path/to/data.csv’
}, function (err, summary) {
if (err) { console.error(err); return; }
console.log(summary);
});
- 执行命令:node run-tests.js
- 适用场景:服务器/CI 环境、定时任务、批量回归与报告集成。
五 常见问题与最佳实践
- 编码与格式:
- CSV 必须为 UTF-8(建议无 BOM),首行为列名;文件末尾避免空行;CSV 中非数值会被自动加引号,字符串无需手动加引号。
- 数据驱动要点:
- 请求用 {{变量名}} 引用数据;脚本中用 data.列名 读取当前行数据;CSV 首行会被自动忽略。
- 运行配置:
- Runner 中可用 Preview 校验数据;迭代次数通常由数据行数决定;可设置 Delay 控制节奏;按需勾选保存响应与 Cookie 策略。
- 无头与自动化:
- 无界面或 CI 建议使用 Newman 执行集合与数据文件,便于日志、报告与流水线集成。