如何在Ubuntu上用Postman进行数据驱动测试
确保Ubuntu系统已安装Node.js和npm(Postman命令行工具Newman的依赖)。打开终端,执行以下命令安装:
sudo apt-get update
sudo apt-get install nodejs npm
安装完成后,通过npm全局安装Newman(Postman的命令行运行工具):
sudo npm install -g newman
数据驱动测试的核心是数据文件,Postman支持CSV和JSON格式。
test_data.csv:username,password,expected_status
user1,pass1,200
user2,invalid,401
user3,pass3,200
test_data.json:[
{"username": "user1", "password": "pass1", "expected_status": 200},
{"username": "user2", "password": "invalid", "expected_status": 401},
{"username": "user3", "password": "pass3", "expected_status": 200}
]
注意:CSV文件避免空行,JSON文件确保格式正确(可使用在线工具验证)。
https://api.example.com/login)。{{variableName}}语法引用数据文件中的变量。例如:
username,Value: {{username}}password,Value: {{password}}username和password的值替换变量。在请求的“Tests”标签中,编写JavaScript代码验证响应。常用断言包括状态码、响应体属性等。例如:
// 获取响应状态码
pm.test("Status code is correct", function () {
pm.response.to.have.status(pm.variables.get("expected_status"));
});
// 解析响应体为JSON
const responseJson = pm.response.json();
// 验证响应体中的关键属性
pm.test("Response contains valid data", function () {
pm.expect(responseJson).to.have.property("token");
pm.expect(responseJson.token).to.be.a("string");
});
说明:pm.variables.get("expected_status")用于获取数据文件中“expected_status”列的值,确保测试逻辑与数据分离。
test_data.csv或test_data.json)。在终端中执行以下命令,通过Newman运行集合并加载数据文件:
newman run /path/to/Login_API_Tests.json -d /path/to/test_data.csv
参数说明:
/path/to/Login_API_Tests.json:Postman集合文件的绝对路径(需替换为实际路径)。-d /path/to/test_data.csv:数据文件的路径(支持CSV/JSON格式)。→ Login
✓ Status code is correct (200)
✓ Response contains valid data (token)
→ Login
✓ Status code is correct (401)
✓ Response contains valid data (error)
┌─────────────────────────┬──────────┬──────────┐
│ │ executed │ failed │
├─────────────────────────┼──────────┼──────────┤
│ iterations │ 3 │ 0 │
│ requests │ 3 │ 0 │
│ test-scripts │ 6 │ 0 │
│ prerequest-scripts │ 0 │ 0 │
│ assertions │ 6 │ 0 │
└─────────────────────────┴──────────┴──────────┘
console.log(pm.response.json()),查看响应体详情(在Runner的“Console”标签中查看日志)。{{variableName}}一致。通过以上步骤,即可在Ubuntu系统上使用Postman完成数据驱动测试,实现对API多场景的自动化覆盖。