1. 响应状态码断言
- 方法:
pm.response.to.have.status(code)
- 自定义参数:
code
(期望的 HTTP 状态码) - 使用方法:验证 API 响应的 HTTP 状态码是否与期望的状态码匹配。
pm.test("Status code is 200", function () {
pm.response.to.have.status(200); // 期望状态码为 200
});
2. 响应头断言
- 方法:
pm.response.to.have.header(key)
和pm.expect(pm.response.headers.get(key)).to.eql(value)
- 自定义参数:
key
(HTTP 头的名称),value
(期望的头值) - 使用方法:验证响应中是否包含特定的 HTTP 头字段,并检查其值是否与期望的值相等。
pm.test("Content-Type header is present", function () {
pm.response.to.have.header("Content-Type"); // 验证 Content-Type 头存在
});
pm.test("Content-Type is JSON", function () {
pm.expect(pm.response.headers.get("Content-Type")).to.eql("application/json"); // 验证 Content-Type 的值为 application/json
});
3. 响应体断言
- 方法:
pm.expect(pm.response.text()).to.include(string)
,pm.expect(pm.response.json()).to.eql(jsonObject)
,pm.expect(pm.response.json().key).to.eql(value)
- 自定义参数:
string
(期望的文本),jsonObject
(期望的 JSON 对象),key
(JSON 中的字段名),value
(期望的字段值) - 使用方法:验证响应体文本是否包含特定的字符串,或者检查 JSON 响应体是否与期望的 JSON 对象相等,或者验证 JSON 响应体中特定字段的值。
pm.test("Body matches string", function () {
pm.expect(pm.response.text()).to.include("some text"); // 验证响应体包含 "some text"
});
pm.test("Response body matches JSON object", function () {
var expectedJson = { key: "value" };
pm.expect(pm.response.json()).to.eql(expectedJson); // 验证响应体与 expectedJson 相等
});
pm.test("Response contains specific JSON value", function () {
pm.expect(pm.response.json().key).to.eql("expected value"); // 验证响应体中 key 字段的值为 "expected value"
});
4. 响应时间断言
- 方法:
pm.expect(pm.response.responseTime).to.be.below(ms)
和pm.expect(pm.response.responseTime).to.be.above(ms)
- 自定义参数:
ms
(期望的响应时间,以毫秒为单位) - 使用方法:验证 API 响应的时间是否低于或高于期望的响应时间。
pm.test("Response time is less than 200ms", function () {
pm.expect(pm.response.responseTime).to.be.below(200); // 验证响应时间低于 200ms
});
pm.test("Response time is above 100ms", function () {
pm.expect(pm.response.responseTime).to.be.above(100); // 验证响应时间高于 100ms
});
5. 响应内容类型断言
- 方法:
pm.response.to.be.json
,pm.response.to.be.html
,pm.response.to.be.text
,pm.response.to.be.xml
- 自定义参数:无
- 使用方法:验证 API 响应的内容类型是否与期望的类型匹配。
pm.test("Response is JSON", function () {
pm.response.to.be.json; // 验证响应内容为 JSON 类型
});
pm.test("Response is not HTML", function () {
pm.response.to.not.be.html; // 验证响应内容不是 HTML 类型
});
请注意,以上示例中的断言方法可能需要适当地嵌套在
pm.test
函数中,以便在 Postman 中正确执行和报告。另外,有些断言方法可能返回布尔值,它们应与其他断言方法(如
pm.expect(condition).to.be.true
)结合使用,以确保正确的测试逻辑。
此外,Postman 支持使用 Chai.js 的所有断言方法,因此您可以利用 Chai.js 提供的更多断言功能,如深度比较、正则表达式匹配等。您可以查阅 Chai.js 的文档以获取更多信息。
版权归原作者 小邓在Working 所有, 如有侵权,请联系我们删除。