【问题标题】:Get content length of Postman request including variable values获取 Postman 请求的内容长度,包括变量值
【发布时间】:2022-05-10 09:03:40
【问题描述】:

如何以编程方式获取 Postman 请求的内容长度,包括变量值?

我需要在 Postman 中放入的 PUT 请求中包含 content-length 标头。我可以在预请求脚本中获取请求内容长度,但是,根据Postman script documentation,预请求脚本是(duh)在生成请求(或仅发送?)之前获取内容长度。这对我的场景来说是有问题的,因为在为请求填写变量值之后我需要内容长度。

//Get request length
var rdata = request.data;
var requestLength = JSON.stringify(JSON.parse(rdata)).length;
pm.environment.set("requestLength", requestLength);
console.log(requestLength);

【问题讨论】:

  • 您能否获取请求中的响应标头并将该值分配给变量?喜欢pm.environment.set('requestLength', pm.response.headers('Content-Length'))
  • 我实际上尝试过这个并意识到它并没有像我想的那样做 - pm.response.headers 返回一个标题数组。你可以在上面做 JSON.stringify() ,然后 JSON.parse() 我们你需要的值。它与您所拥有的非常相似。你可以试试这个([4] 是我自己的要求,可能需要改变这个)? var contentLength = JSON.stringify(pm.response.headers); pm.environment.set('contentLength', JSON.parse(contentLength)[4].value);
  • 作为一种解决方法,您是否尝试执行第一个“虚拟请求”(使用 HEAD 而不是 PUT)以获取“测试”部分中的数据长度,设置全局变量,然后用正确的值调用您的真实请求?但不是很干净。
  • 或者您可以在测试选项卡中获取您的请求大小,然后再次尝试根据您拥有的元素(正文、标题等)为您的最终请求计算它?

标签: postman web-api-testing


【解决方案1】:

pm.environment.set("requestLength", request.data.length);

【讨论】:

  • 点评来源: Stack Overflow 上不鼓励仅使用代码的答案,因为它们没有解释它是如何解决问题的。请编辑您的答案以解释此代码的作用以及它如何回答问题,以便它对 OP 以及其他也有类似问题的用户有用。请参阅:How do I write a good answer?。谢谢
猜你喜欢
  • 1970-01-01
  • 2012-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-12
  • 2018-04-18
相关资源
最近更新 更多