您的位置:

Postman断言详解

一、什么是断言?

在测试中,断言是测试正确行为的方法。它是由测试工具或测试库提供的语句或代码段。它通常是在代码的某个位置插入的,以检验程序的某个方面是否“符合预期”。 在 API 测试中,可以使用 Postman 利用断言验证 API 的正确性、性能和安全性。

二、响应断言

在 API 测试中,响应断言是最常用且最基本的断言之一。我们对于每个请求发出的响应来做出断言,并确保响应的状态码、消息正文等等都符合预期。

1、验证状态码


pm.test("Response code is 200", function () {
    pm.response.to.have.status(200);
});

这段代码将检查 API 的响应状态码是否都是200。如果检查失败,将显示一条失败消息。

2、验证响应时间


const MAX_RESPONSE_TIME = 2000; // in ms

pm.test("Response time is less than " + MAX_RESPONSE_TIME + "ms", function () {
    pm.expect(pm.response.responseTime).to.be.below(MAX_RESPONSE_TIME);
});

这段代码将检查 API 的响应时间是否小于设定的最大响应时间(2秒)。如果检查失败,将显示一条失败消息。

3、验证响应消息正文


pm.test("Response body matches expected value", function () {
    pm.expect(pm.response.text()).to.include("expected value");
});

这段代码将检查 API 的响应消息正文是否包含“expected value”这个内容。如果检查失败,将显示一条失败消息。

4、验证响应格式


pm.test("Response should be in JSON format", function () {
    pm.response.to.be.json; // this will make sure that response is in JSON format
});

这段代码将检查 API 的响应是否是 JSON 格式。如果检查失败,将显示一条失败消息。

三、环境变量断言

除了响应断言,Postman 还支持环境变量的断言。环境变量是存储在 Postman 中的可被脚本使用的全局变量。环境变量可用于存储和传递 API 测试中的数据。

1、验证环境变量存在


pm.test("Environment variable exists", function() {
    pm.expect(pm.environment.has("variable_key")).to.be.true;
});

这段代码将检查名为“variable_key”的环境变量是否存在。如果检查失败,将显示一条失败消息。

2、验证环境变量的值


pm.test("Environment variable value is expected", function() {
    pm.expect(pm.environment.get("variable_key")).to.eql("expected_value");
});

这段代码将检查名为“variable_key”的环境变量的值是否等于“expected_value”。如果检查失败,将显示一条失败消息。

3、验证环境变量是数字


pm.test("Environment variable is a number", function () {
    var value = pm.environment.get("variable_key");
    pm.expect(Number(value)).to.be.a("number");
});

这段代码将检查名为“variable_key”的环境变量的值是否为数字类型。如果检查失败,将显示一条失败消息。

四、集成测试断言

在集成测试中,可以使用断言来检查 API 与其他应用程序集成时的正常工作。

1、验证 API 认证


pm.test("API requires authentication", function () {
    pm.expect(pm.response.headers.get("Authorization")).to.not.be.null;
});

这段代码将验证 API 是否需要进行身份验证。 如果检查失败,将显示一条失败消息。

2、验证 API 是否调用其他服务


pm.test("API calls another service", function () {
    pm.expect(pm.response.headers.get("Service-Name")).to.eqls("Service-Name");
});

这段代码将验证 API 是否调用名为“Service-Name”的另一个服务。如果检查失败,将显示一条失败消息。

3、验证 API 与数据库的交互


pm.test("API interacts with database", function () {
    pm.expect(pm.response.text()).to.include("SELECT * FROM TABLE");
});

这段代码将验证 API 是否与名为“TABLE”的数据库进行交互。如果检查失败,将显示一条失败消息。

五、规范断言

规范断言用于验证 API 是否遵循行业标准、规范和最佳实践。它在 API 测试中很重要,因为它确认了 API 的质量和可靠性。

1、验证 HTTP 方法


pm.test("API uses correct HTTP method", function () {
    pm.expect(pm.request.method).to.eql("GET");
});

这段代码将验证 API 使用的 HTTP 方法是否正确。如果检查失败,将显示一条失败消息。

2、验证 API 路径


pm.test("API path is valid", function () {
    pm.expect(pm.request.url.pathname).to.eql("/api/path");
});

这段代码将验证 API 的路径是否正确。如果检查失败,将显示一条失败消息。

3、验证 API 参数


pm.test("API parameters are correct", function () {
    pm.expect(pm.request.url.query).to.eql({"param_key":"param_value"});
});

这段代码将验证 API 的参数是否正确。如果检查失败,将显示一条失败消息。