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

时间:2018-03-13 09:58:20

标签: testing automated-tests postman

我想检查具体响应头(“Location”)中的值作为Postman中的测试结果。 在Postman的文档中,我找到了如何使用

检查标题存在的示例
pm.test("Content-Type is present", function () {
   pm.response.to.have.header("Content-Type");
});

但我正在寻找的是像

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

6 个答案:

答案 0 :(得分:22)

我终于找到了解决方案:

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");
});

答案 1 :(得分: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);
   }
});

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

但这全取决于情况。就像,您可能想要提取并预处理/后处理重定向URL。

例如,

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

答案 2 :(得分:0)

HeadersList具有方法has(item, valueopt) → {Boolean},因此检查标头的最简单方法是:

const base_url = pm.variables.get("base_url")

pm.test("Redirect to OAuth2 endpoint", () => {
    pm.expect(pm.response.headers.has("Location",`${base_url}/oauth2/`)).is.true
})

答案 3 :(得分:0)

pm.test("Location value is correct", function () {
   pm.expect(pm.response.headers.get('Location')).to.eql('http://google.com');
});

答案 4 :(得分:0)

Postman 也支持 ES6/ES2015 语法,允许我们使用箭头函数。

下面是一个简单的测试来验证通用响应头是否存在:

pm.test("Verify response headers are present ", () => {
    pm.response.to.have.header("Date");
    pm.response.to.have.header("Content-Length");
    pm.response.to.have.header("Content-Type");
});

当然,您可以检查您的 API 可能返回的任何自定义标头。

答案 5 :(得分:0)

使用 BDD 期望/应该样式:

pm.test("Redirect location is correct", () => {
   pm.expect(pm.response).to.include.header("Location");
   pm.expect(pm.response).to.have.header("Location", "http://example.com/expected-redirect-url");
});