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

如何在Postman中针对复杂JSON请求体实现数据驱动测试?

Postman复杂嵌套JSON请求体的数据驱动测试解决方案

问题核心

Collection Runner默认仅能直接识别请求体中的顶层变量,对于多层嵌套结构或数组内的变量,无法自动完成填充,仅靠修改请求体结构无法解决。


解决方案1:匹配请求体结构调整数据文件

将你的数据文件(推荐用JSON格式,CSV无法支持嵌套结构)改成与请求体完全对应的嵌套格式,然后在请求体中通过点符号或数组索引精准引用嵌套变量。

示例数据文件(JSON格式)

[
  {
    "data1": "测试值1",
    "data2": "测试值2",
    "data3": "测试值3",
    "data4": "测试值4",
    "nestedData": {
      "subData1": "子测试值1",
      "subDataArray": ["数组项1", "数组项2", "数组项3"],
      "subData2": "子测试值2",
      "subData3": "子测试值3",
      "nestedArray": [
        {
          "innerData1": "内层值1",
          "innerData2": "内层值2",
          "innerNestedArray": [{"deepData": "深层值1", "deepData2": "深层值2"}]
        },
        {
          "innerData1": "内层值3",
          "innerData2": "内层值4",
          "innerNestedArray": [{"deepData": "深层值3", "deepData2": "深层值4"}]
        }
      ]
    }
  }
]

修改后的请求体

可以直接引用整个嵌套对象,或单独指定嵌套字段:

{
    "data1": "{{data1}}",
    "data2": "{{data2}}",
    "data3": "{{data3}}",
    "data4": "{{data4}}",
    "nestedData": {
        "subData1": "{{nestedData.subData1}}",
        "subDataArray": "{{nestedData.subDataArray}}",
        "subData2": "{{nestedData.subData2}}",
        "subData3": "{{nestedData.subData3}}",
        "nestedArray": [
            {
                "innerData1": "{{nestedData.nestedArray[0].innerData1}}",
                "innerData2": "{{nestedData.nestedArray[0].innerData2}}",
                "innerNestedArray": [
                    {
                        "deepData": "{{nestedData.nestedArray[0].innerNestedArray[0].deepData}}",
                        "deepData2": "{{nestedData.nestedArray[0].innerNestedArray[0].deepData2}}"
                    }
                ]
            },
            {
                "innerData1": "{{nestedData.nestedArray[1].innerData1}}",
                "innerData2": "{{nestedData.nestedArray[1].innerData2}}",
                "innerNestedArray": [
                    {
                        "deepData": "{{nestedData.nestedArray[1].innerNestedArray[0].deepData}}",
                        "deepData2": "{{nestedData.nestedArray[1].innerNestedArray[0].deepData2}}"
                    }
                ]
            }
        ]
    }
}

解决方案2:用Pre-request Script手动构建请求体

如果不想调整数据文件,保持扁平变量名(如subData1、innerData1),可以通过Pre-request Script读取所有变量,手动拼接成完整的嵌套请求体。

编写Pre-request Script

// 读取所有需要的测试变量
const requestBody = {
    "data1": pm.variables.get("data1"),
    "data2": pm.variables.get("data2"),
    "data3": pm.variables.get("data3"),
    "data4": pm.variables.get("data4"),
    "nestedData": {
        "subData1": pm.variables.get("subData1"),
        "subDataArray": [
            pm.variables.get("subDataArrayItem1"),
            pm.variables.get("subDataArrayItem2"),
            pm.variables.get("subDataArrayItem3")
        ],
        "subData2": pm.variables.get("subData2"),
        "subData3": pm.variables.get("subData3"),
        "nestedArray": [
            {
                "innerData1": pm.variables.get("innerData1"),
                "innerData2": pm.variables.get("innerData2"),
                "innerNestedArray": [
                    {
                        "deepData": pm.variables.get("deepData1"),
                        "deepData2": pm.variables.get("deepData2")
                    }
                ]
            },
            {
                "innerData1": pm.variables.get("innerData3"),
                "innerData2": pm.variables.get("innerData4"),
                "innerNestedArray": [
                    {
                        "deepData": pm.variables.get("deepData3"),
                        "deepData2": pm.variables.get("deepData4")
                    }
                ]
            }
        ]
    }
};

// 将构建好的JSON设置为当前请求的请求体
pm.request.body.raw = JSON.stringify(requestBody, null, 2);

验证步骤

  1. 在Pre-request Script中添加console.log(requestBody),打开Postman控制台查看生成的请求体是否正确。
  2. 先用单条测试数据验证填充效果,确认无误后再批量运行Collection Runner。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 11:56:12