Postman 作为强大的 API 测试工具,能显著提升电商 API 的开发效率。以下教程从基础配置到自动化测试,帮助你快速掌握电商 API 测试技巧,包含一键导入、环境变量管理、请求自动化等核心功能。
一、Postman 基础配置:快速接入电商 API
1. 一键导入官方 API 集合
多数电商平台(如京东、亚马逊)提供 Postman 集合文件,可直接导入:
- 
操作步骤: - 在 Postman 界面点击 "Import" → "Link";
- 粘贴平台提供的集合 URL(如亚马逊 SP-API 的官方集合);
- 选择环境(如 "Production" 或 "Sandbox")完成导入。
 
- 
示例:导入京东开放平台 API 集合 plaintext markdown1. 访问京东开放平台文档中心; 2. 找到"Postman集合下载"链接; 3. 导入后自动获取商品、订单等模块的预设请求。
2. 环境变量配置
创建环境变量管理 API 密钥、URL 等参数:
- 
变量示例: 变量名 描述 示例值 app_key应用标识 test_app_123app_secret应用密钥(加密签名用) a1b2c3d4e5f6g7h8i9j0kbase_urlAPI 基础 URL https://api.jd.com/routerjsonaccess_token用户授权令牌 at-1234567890abcdef
- 
设置方法: - 点击 Postman 右上角 "Environments" → "Add";
- 添加变量并保存(如{{app_key}});
- 在请求中通过{{变量名}}引用(如{{base_url}}/product/get)。
 
二、签名生成:破解电商 API 认证机制
1. 自动生成签名的 Pre-request Script
多数电商 API 需签名验证,可通过 Postman 的 Pre-request Script 自动生成:
- 
示例:京东 API 签名脚本 javascript ini// 生成时间戳 const timestamp = new Date().getTime(); pm.environment.set("timestamp", timestamp); // 准备签名参数 const appKey = pm.environment.get("app_key"); const appSecret = pm.environment.get("app_secret"); const method = pm.request.url.path[0]; // 获取请求方法名 // 构建参数字典(按实际API要求调整) const params = { "app_key": appKey, "method": method, "timestamp": timestamp, "format": "json", "v": "2.0", // 添加其他必要参数 }; // 排序并拼接参数 const sortedParams = Object.keys(params).sort().reduce((acc, key) => { acc[key] = params[key]; return acc; }, {}); let signStr = appSecret; for (const [key, value] of Object.entries(sortedParams)) { signStr += `${key}${value}`; } signStr += appSecret; // 生成MD5签名 const CryptoJS = require('crypto-js'); const sign = CryptoJS.MD5(signStr).toString().toUpperCase(); pm.environment.set("sign", sign);
- 
使用方法: - 在请求的 "Pre-request Script" 标签页粘贴脚本;
- 在请求参数中添加{{sign}}和{{timestamp}}。
 
三、高级请求技巧:批量测试与参数化
1. 参数化测试
测试多个商品 ID 或订单号时,使用 CSV 文件批量导入:
- 
操作步骤: - 
创建 CSV 文件(如 test_data.csv):csv yamlproduct_id,price 1001,2999 1002,1999 1003,3999
- 
在请求 URL 或 Body 中使用 {{product_id}}引用参数;
- 
点击 "Runner",选择集合和 CSV 文件,配置迭代次数。 
 
- 
2. 批量请求与并发
使用 Postman 的 Runner 批量执行请求:
- 
关键配置: - 迭代次数:设置为 CSV 行数(如 3);
- 延迟:根据 API 限流设置(如 1000ms 避免触发限流);
- 并发请求数:根据性能需求调整(如 5 并发)。
 
四、自动化测试:从响应验证到断言
1. 响应验证脚本
添加 Tests 验证 API 返回结果:
- 
示例:验证商品价格 javascript scss// 解析JSON响应 const response = pm.response.json(); // 验证状态码 pm.test("Status code is 200", () => { pm.response.to.have.status(200); }); // 验证价格字段存在且合理 pm.test("Price is valid", () => { pm.expect(response.price).to.be.a('number'); pm.expect(response.price).to.be.above(0); });
2. 断言库使用
Postman 内置 Chai 断言库,支持多种验证方式:
| 断言类型 | 示例代码 | 验证目标 | 
|---|---|---|
| 存在性验证 | pm.expect(response.id).to.exist | 字段是否存在 | 
| 类型验证 | pm.expect(response.price).to.be.a('number') | 字段类型是否正确 | 
| 范围验证 | pm.expect(response.stock).to.be.within(0, 1000) | 字段值是否在范围内 | 
| 包含验证 | pm.expect(response.name).to.include('手机') | 字符串是否包含特定内容 | 
五、环境切换:区分测试与生产环境
1. 创建多环境配置
为开发、测试、生产环境分别创建配置:
- 
操作步骤: - 点击 "Environments" → "Add";
- 创建 "Development" 环境,设置测试 API 密钥;
- 创建 "Production" 环境,设置生产 API 密钥;
- 在请求中通过{{变量名}}统一引用。
 
2. 环境变量继承
使用_parent变量实现环境继承:
- 
示例: - 
在 "Production" 环境中设置: plaintext makefilebase_url: https://api.jd.com app_key: prod_key_123
- 
在 "Development" 环境中设置: plaintext makefile_parent: Production app_key: dev_key_456
- 
"Development" 自动继承 base_url,覆盖app_key。
 
- 
六、数据导出与集成:打通开发流程
1. 导出测试结果
将测试结果导出为报告:
- 
操作步骤: - 运行测试集合;
- 点击 "Export Results";
- 选择格式(JSON、HTML 等);
- 集成到 CI/CD 流程(如 Jenkins、GitLab CI)。
 
2. 与 CI/CD 工具集成
通过 Newman 命令行工具实现自动化测试:
- 
安装 Newman: bash npm install -g newman
- 
执行测试: bash arduinonewman run "电商API.postman_collection.json" -e "Production.postman_environment.json" -r html
七、实战案例:以京东 API 测试为例
1. 测试商品查询接口
- 
请求配置: - 
URL: {{base_url}}/routerjson
- 
Method: POST
- 
Headers: plaintext bashContent-Type: application/x-www-form-urlencoded
- 
Body: plaintext iniapp_key={{app_key}} method=jingdong.ware.product.get timestamp={{timestamp}} format=json v=2.0 sign={{sign}} param_json={"skuId":{{product_id}}}
 
- 
- 
Pre-request Script:使用前文的签名生成脚本。 
- 
Tests: javascript vbscriptconst response = pm.response.json(); pm.test("商品信息返回成功", () => { pm.expect(response.error_response).to.not.exist; pm.expect(response.productInfo).to.exist; pm.expect(response.productInfo.skuId).to.eql(pm.environment.get("product_id")); });
八、常见问题与解决方案
| 问题场景 | 解决方案 | 
|---|---|
| 签名失败 | 1. 检查参数排序是否正确 2. 验证时间戳精度(毫秒级) 3. 确认加密算法(MD5/SHA256) | 
| 请求被限流 | 1. 在 Runner 中设置请求延迟 2. 添加指数退避重试脚本 3. 联系平台申请提高 QPS 限额 | 
| 环境变量不生效 | 1. 确认当前激活的环境 2. 检查变量名是否拼写错误 3. 使用 console.log()调试 | 
| 测试脚本执行失败 | 1. 检查 JSON 解析是否正确( pm.response.json()) 2. 确认字段路径是否正确 | 
通过以上技巧,你可以高效测试各类电商 API,从基础请求到复杂的自动化测试,全面提升开发效率。建议结合平台官方文档,针对性调整请求参数和测试逻辑