在Postman测试中检查响应头的值

Llu*_*ñol 14 testing automated-tests postman

我想检查具体响应头("位置")中的值作为Postman中的测试结果.在Postman的文档中,我找到了如何检查标题存在的示例

pm.test("Content-Type is present", function () {
   pm.response.to.have.header("Content-Type");
});
Run Code Online (Sandbox Code Playgroud)

但我正在寻找的是类似的东西

pm.test("Location value is correct", function () {
   CODE HERE THAT CHECKS "Location" HEADER EQUALS TO SOMETHING;
});
Run Code Online (Sandbox Code Playgroud)

Llu*_*ñol 37

我终于找到了解决方案:

pm.test("Redirect location is correct", function () {
   pm.response.to.have.header("Location");
   pm.response.to.be.header("Location", "http://example.com/expected-redirect-url");
});
Run Code Online (Sandbox Code Playgroud)

  • 沙箱你非常喜欢! (2认同)
  • 你是沙盒!:) (2认同)
  • 对于 Postman v7.35.0,请记住在“设置”中关闭_自动遵循重定向_以查看重定向响应。 (2认同)

小智 5

这是在“测试”部分中提取特定响应标头的另一种方式...

loc = pm.response.headers.get("Location");

以防万一,如果后续请求需要特定信息(例如标头值),则还可以如下将其存储/设置为环境变量,然后进一步重用

pm.environment.set("redirURL", loc);

var loc = null;
pm.test("Collect redirect location", function () {
   pm.response.to.have.header("Location");
   loc = pm.response.headers.get("Location");
   if (loc !== undefined) {
      pm.environment.set("redirURL", loc);
   }
});
Run Code Online (Sandbox Code Playgroud)

优点是-可以操纵变量中收集的值。

但这一切都取决于情况。像,您可能想要提取和预处理/后处理重定向URL。

例如,

在运行测试集合时,您希望将值收集到一个变量中并将其更改为指向模拟服务器的host:port