数据驱动测试的核心是数据文件,Postman支持CSV或JSON格式。数据文件需包含接口请求所需的输入参数(如用户名、密码)及预期输出(如状态码、响应字段)。
test_data.csv):username,password,expected_status
user1,pass1,200
user2,pass2,401
test_data.json):[
{ "username": "user1", "password": "pass1", "expected_status": 200 },
{ "username": "user2", "password": "pass2", "expected_status": 401 }
]
注:数据文件的字段名需与接口请求参数、断言中的变量名一致。
环境变量/集合变量用于存储数据文件中的动态值,避免硬编码。
LoginTestData),添加变量(如username、password、expected_status),初始值可留空。Login API Tests),用于归类数据驱动测试用例。在请求中使用{{variable}}语法引用环境/集合变量,实现动态参数传递。
https://example.com/api/login):
Content-Type: application/x-www-form-urlencoded(根据接口要求调整)。x-www-form-urlencoded格式):username: {{username}}
password: {{password}}
注:变量名需与数据文件中的字段名完全一致。
在请求的「Tests」标签页中编写脚本,使用Postman的pm对象进行断言和变量操作。
// 获取环境变量中的预期状态码
const expectedStatus = pm.environment.get("expected_status");
// 断言HTTP状态码
pm.test("Status code is " + expectedStatus, function () {
pm.response.to.have.status(expectedStatus);
});
// 解析响应体(假设返回JSON)
const responseData = pm.response.json();
// 断言响应中的status字段
pm.test("Response status is 1", function () {
pm.expect(responseData.status).to.eql(1); // 假设1表示成功
});
// 断言响应中的msg字段
pm.test("Response message is correct", function () {
pm.expect(responseData.msg).to.eql("Login successful"); // 根据预期结果调整
});
注:
pm.environment.get()用于获取环境变量,pm.response.json()用于解析响应体。
使用Collection Runner批量运行测试,关联数据文件。
Login API Tests)→ 点击「Runner」。LoginTestData);test_data.csv或test_data.json);测试运行完成后,Postman会生成结果面板,包含以下信息:
注:可通过「View Results」查看每个请求的详细日志(如请求头、响应体)。
通过以上步骤,即可在Ubuntu系统中使用Postman实现数据驱动测试,覆盖多组输入数据下的接口行为验证,提升测试效率和覆盖率。