用Postman玩转电商API:一键测试+自动化请求教程

Postman 作为强大的 API 测试工具,能显著提升电商 API 的开发效率。以下教程从基础配置到自动化测试,帮助你快速掌握电商 API 测试技巧,包含一键导入、环境变量管理、请求自动化等核心功能。

一、Postman 基础配置:快速接入电商 API

1. 一键导入官方 API 集合

多数电商平台(如京东、亚马逊)提供 Postman 集合文件,可直接导入:

  • 操作步骤

    1. 在 Postman 界面点击 "Import" → "Link";
    2. 粘贴平台提供的集合 URL(如亚马逊 SP-API 的官方集合);
    3. 选择环境(如 "Production" 或 "Sandbox")完成导入。
  • 示例:导入京东开放平台 API 集合

    plaintext

    markdown 复制代码
    1. 访问京东开放平台文档中心;
    2. 找到"Postman集合下载"链接;
    3. 导入后自动获取商品、订单等模块的预设请求。

2. 环境变量配置

创建环境变量管理 API 密钥、URL 等参数:

  • 变量示例

    变量名 描述 示例值
    app_key 应用标识 test_app_123
    app_secret 应用密钥(加密签名用) a1b2c3d4e5f6g7h8i9j0k
    base_url API 基础 URL https://api.jd.com/routerjson
    access_token 用户授权令牌 at-1234567890abcdef
  • 设置方法

    1. 点击 Postman 右上角 "Environments" → "Add";
    2. 添加变量并保存(如{{app_key}});
    3. 在请求中通过{{变量名}}引用(如{{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);
  • 使用方法

    1. 在请求的 "Pre-request Script" 标签页粘贴脚本;
    2. 在请求参数中添加{{sign}}{{timestamp}}

三、高级请求技巧:批量测试与参数化

1. 参数化测试

测试多个商品 ID 或订单号时,使用 CSV 文件批量导入:

  • 操作步骤

    1. 创建 CSV 文件(如test_data.csv):

      csv

      yaml 复制代码
      product_id,price
      1001,2999
      1002,1999
      1003,3999
    2. 在请求 URL 或 Body 中使用{{product_id}}引用参数;

    3. 点击 "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. 创建多环境配置

为开发、测试、生产环境分别创建配置:

  • 操作步骤

    1. 点击 "Environments" → "Add";
    2. 创建 "Development" 环境,设置测试 API 密钥;
    3. 创建 "Production" 环境,设置生产 API 密钥;
    4. 在请求中通过{{变量名}}统一引用。

2. 环境变量继承

使用_parent变量实现环境继承:

  • 示例

    • 在 "Production" 环境中设置:

      plaintext

      makefile 复制代码
      base_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. 导出测试结果

将测试结果导出为报告:

  • 操作步骤

    1. 运行测试集合;
    2. 点击 "Export Results";
    3. 选择格式(JSON、HTML 等);
    4. 集成到 CI/CD 流程(如 Jenkins、GitLab CI)。

2. 与 CI/CD 工具集成

通过 Newman 命令行工具实现自动化测试:

  • 安装 Newman: bash

    复制代码
    npm install -g newman
  • 执行测试

    bash

    arduino 复制代码
    newman run "电商API.postman_collection.json" -e "Production.postman_environment.json" -r html

七、实战案例:以京东 API 测试为例

1. 测试商品查询接口

  • 请求配置

    • URL: {{base_url}}/routerjson

    • Method: POST

    • Headers:

      plaintext

      bash 复制代码
      Content-Type: application/x-www-form-urlencoded
    • Body:

      plaintext

      ini 复制代码
      app_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

    vbscript 复制代码
    const 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,从基础请求到复杂的自动化测试,全面提升开发效率。建议结合平台官方文档,针对性调整请求参数和测试逻辑

相关推荐
倪旻萱9 分钟前
XSS漏洞----基于Dom的xss
前端·xss
JSON_L2 小时前
Vue rem回顾
前端·javascript·vue.js
brzhang4 小时前
颠覆你对代码的认知:当程序和数据只剩下一棵树,能读懂这篇文章的人估计全球也不到 100 个人
前端·后端·架构
斟的是酒中桃4 小时前
基于Transformer的智能对话系统:FastAPI后端与Streamlit前端实现
前端·transformer·fastapi
烛阴5 小时前
Fract - Grid
前端·webgl
JiaLin_Denny5 小时前
React 实现人员列表多选、全选与取消全选功能
前端·react.js·人员列表选择·人员选择·人员多选全选·通讯录人员选择
brzhang5 小时前
我见过了太多做智能音箱做成智障音箱的例子了,今天我就来说说如何做意图识别
前端·后端·架构
为什么名字不能重复呢?6 小时前
Day1||Vue指令学习
前端·vue.js·学习
eternalless6 小时前
【原创】中后台前端架构思路 - 组件库(1)
前端·react.js·架构
Moment6 小时前
基于 Tiptap + Yjs + Hocuspocus 的富文本协同项目,期待你的参与 😍😍😍
前端·javascript·react.js