You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Postman自动化测试:如何实现可复用请求体?

Postman 复用请求体的可行方案

针对你需要统一维护请求体、避免重复修改多个请求的需求,推荐以下几种实用方法:

方法1:集合级变量存储基础请求体

这是最直观的方式,把通用请求体存在集合变量里,每个请求动态调用并修改:

  • 打开目标集合的「Variables」标签,新增一个变量(比如命名为baseRequestBody),在「Current Value」中填入你的基础JSON请求体,示例:
    {
      "username": "{{testUsername}}",
      "email": "{{testEmail}}",
      "status": "active"
    }
    
  • 在每个测试请求的「Pre-request Script」中,解析基础请求体并补充测试专属字段:
    // 获取集合中的基础请求体
    let baseBody = JSON.parse(pm.collectionVariables.get("baseRequestBody"));
    // 按需添加/修改当前测试的专属字段
    baseBody.phone = "{{testPhone}}";
    baseBody.nickname = pm.variables.get("customNickname");
    // 将最终体设置为当前请求的body
    pm.request.body.raw = JSON.stringify(baseBody, null, 2);
    
  • 后续新增必填字段时,直接修改集合变量baseRequestBody的内容,所有引用该变量的请求会自动同步更新。

方法2:集合预请求脚本定义全局生成函数

适合需要更灵活字段组合的场景,把生成请求体的逻辑统一放在集合层面:

  • 进入集合的「Pre-request Script」标签,定义一个全局可用的请求体生成函数:
    // 全局函数:生成基础请求体,可传入自定义字段进行合并
    window.generateRequestBody = function(customFields = {}) {
      const baseBody = {
        "username": "{{testUsername}}",
        "email": "{{testEmail}}",
        "status": "active"
      };
      // 合并自定义字段到基础体
      Object.assign(baseBody, customFields);
      return JSON.stringify(baseBody, null, 2);
    }
    
  • 在每个测试请求的「Pre-request Script」中调用该函数,传入当前测试的专属字段:
    // 调用全局函数,传入当前测试需要的字段
    const requestBody = generateRequestBody({
      phone: "{{testPhone}}",
      age: pm.variables.get("testAge")
    });
    // 设置为当前请求的body
    pm.request.body.raw = requestBody;
    
  • 新增必填字段时,直接修改集合预请求脚本里的baseBody对象即可,所有请求都会自动包含新字段。

方法3:环境变量+模板渲染(复杂场景适配)

如果请求体需要更复杂的模板逻辑,可结合Postman内置的变量替换能力:

  • 在环境变量中新增baseRequestBodyTemplate,填入带占位符的基础模板:
    {
      "username": "{{username}}",
      "email": "{{email}}",
      "status": "{{status}}",
      "newRequiredField": "{{newRequiredField}}"
    }
    
  • 在测试请求的「Pre-request Script」中,渲染模板并生成最终请求体:
    const template = pm.environment.get("baseRequestBodyTemplate");
    // 定义当前测试的变量数据
    const data = {
      username: pm.variables.get("testUsername"),
      email: pm.variables.get("testEmail"),
      status: "active",
      newRequiredField: pm.variables.get("newFieldValue")
    };
    // 替换模板中的占位符
    const finalBody = pm.variables.replaceIn(template);
    pm.request.body.raw = finalBody;
    
  • 修改基础结构时,直接更新环境变量里的模板内容即可。

注意事项

  • 确保所有用到的变量(如testUsername)已在集合/环境/全局变量中定义,避免渲染失败
  • 如果请求体是form-data或x-www-form-urlencoded格式,逻辑类似:用预请求脚本先添加通用键值对,再补充测试专属字段
  • 调试时可打开Postman控制台(View > Show Postman Console),打印生成的请求体内容确认正确性

内容的提问来源于stack exchange,提问作者Sofie A

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 22:20:20