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

Postman集合级测试脚本调用pm.sendRequest()无法传递请求体怎么办

问题修复方案

问题原因

你代码中直接对pm.request.headers、pm.request.body调用toString()的写法不符合Postman SDK的使用规范:这两个对象都是Postman封装的专属结构化对象,直接转字符串无法生成pm.sendRequest()可识别的请求参数格式,最终会导致请求头解析异常、请求体为空的问题。

正确修改代码

// 构造请求参数
var request = {
    url: pm.variables.get("host") + pm.request.url.getPathWithQuery(),
    method: pm.request.method,
    // 把请求头转成键值对对象
    header: pm.request.headers.toObject(),
    // 直接复用原请求体的结构化数据,适配form-data、x-www-form-urlencoded、raw等所有请求体类型
    body: pm.request.body.toJSON()
};

pm.sendRequest(request, function(err, res){
  if (err) {
    console.error("旧接口请求失败:", err);
    return;
  }
  console.log("旧接口响应状态码:", res.code);
  // 此处可添加lodash对比新旧响应的逻辑
  // 示例:_.isEqual(res.json(), pm.response.json())
});

额外说明

  • 如果你的旧版本接口和当前接口的路径、请求参数有差异,自行调整url字段的拼接逻辑即可
  • 集合级脚本默认会对集合下所有请求生效,如果需要指定部分请求执行对比逻辑,可以加判断条件过滤,比如只对指定接口名的请求执行pm.sendRequest逻辑
  • 对比响应时如果需要忽略指定字段,可以用lodash的_.omit()方法先剔除不需要对比的字段再做全等判断

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 17:42:02