在电商平台或企业采购系统的测试过程中,“加入购物车”是一个高频使用的功能接口。随着业务复杂度的提升,购物车不仅要支持单个商品的添加,还需要支持批量添加多个商品,传统手动添加需要重复操作,效率低下且难以复用。
为了解决这些问题,我们可以借助 Postman 的数据驱动测试能力(Data-Driven Testing),结合 CSV 文件实现参数化测试。通过该方法,我们可以在一次运行中自动执行多组商品的“加入购物车”操作,不仅大大提高了测试效率,还能保证测试的准确性和可重复性。
本文将带你一步步实现如何使用 Postman + CSV 文件 来对一个加入购物车的接口进行参数化测试,从而提高测试效率和覆盖度。
一、接口说明
我们要测试的接口是一个典型的“加入购物车”接口,请求体如下:
{
"srmMalCartLineTrDTOList": [
{
"item": {
"id": 2038053
},
"itemQty": 1,
"supplier": {
"id": 2144005
},
"snapShotPrc": 22.55,
"priceAgreement": {
"id": 1691
},
"sourceType": "DEFAULT",
"unit": {
"id": 47
}
}
]
}
该接口支持一次添加多个商品到购物车(虽然示例中只传了一个),每个商品的信息包括:商品ID、数量、供应商ID、价格协议ID、单位等字段。
二、目标
我们的目标是通过 CSV 参数化方式,使用不同的商品信息多次调用该接口,达到批量添加大量商品到购物车。
三、准备数据
首先,我们需要创建一个 cart_items.csv
文件,用于存放多组商品信息。每行代表一个商品的数据。
示例 CSV 内容如下:
itemId,itemQty,supplierId,snapShotPrc,priceAgreementId,sourceType,unitId
2038053,1,2144005,22.55,1691,DEFAULT,47
2038054,2,2144006,30.00,1692,DEFAULT,48
2038055,3,2144007,45.60,1693,DEFAULT,49
注意:
字段名要与后续 Postman 请求体中的变量名一致。
sourceType 固定为 DEFAULT,也可以根据需求改为动态字段。
四、配置 Postman 请求
接下来,在 Postman 中创建一个新的 POST 请求,并配置请求体使用 CSV 中的变量。
1. 设置请求方式和 URL
- 方法:POST
- URL:填写你的接口地址,如:
https://api.example.com/cart/add
2. 设置请求头(Header)
确保设置正确的 Content-Type,例如:Content-Type: application/json
3. 设置请求体(Body)
选择 raw
-> JSON
格式,并将 JSON Body 替换为如下内容:
{
"srmMalCartLineTrDTOList": [
{
"item": {
"id": "{{itemId}}"
},
"itemQty": {{itemQty}},
"supplier": {
"id": "{{supplierId}}"
},
"snapShotPrc": {{snapShotPrc}},
"priceAgreement": {
"id": "{{priceAgreementId}}"
},
"sourceType": "{{sourceType}}",
"unit": {
"id": "{{unitId}}"
}
}
]
}
注意:使用双大括号
{{变量名}}
引用 CSV 文件中的列名。
五、使用 Postman Runner 运行参数化测试
1. 打开 Postman Runner
点击 Postman 右上角的 Runner
按钮,进入 Collection Runner 页面。
2. 添加请求或集合
- 在左侧选择你要运行的请求或集合。
- 确保该请求已配置好上面的参数化 Body。
3. 导入 CSV 文件
- 在
Data
区域点击Select File
,上传你准备好的cart_items.csv
。 - 设置迭代次数(Iterations)为 CSV 文件中数据的行数(不包括表头)。
4. 开始执行测试
点击 Start Run
按钮,Postman 将自动遍历每一行数据,并依次替换 Body 中的变量发送请求。
六、添加断言验证接口响应
为了验证接口是否返回预期结果,我们可以添加一些简单的断言脚本。
// 获取响应体
const response = pm.response.json();
// 断言 success 字段为 true
pm.test("Success response is true", function () {
pm.expect(response.success).to.be.true;
});
// 断言 data 存在
pm.test("Data field exists", function () {
pm.expect(response.data).to.exist;
});
七、总结
通过本文的介绍,我们实现了以下目标:
✅ 使用 CSV 文件管理多组商品数据
✅ 在 Postman 中使用变量替代静态值
✅ 利用 Postman Runner 批量运行测试用例
✅ 添加简单断言验证接口响应是否正常
这种参数化测试的方式不仅适用于“加入购物车”接口,还可以广泛应用于订单提交、批量导入、用户注册等多个场景,大大提升测试效率和覆盖率。
如果你觉得这篇文章对你有帮助,欢迎点赞、收藏或分享给身边的朋友。