提升 Postman 的使用体验 - 第二部分

2025-05-25

提升 Postman 的使用体验 - 第二部分

继续学习使用Postman,在本文中,我们将做一个实际的例子,当我们收到一个API规范时,我们如何编写测试,如何创建、运行和使用newman来执行它们。

了解要测试的内容

为了获得良好的测试覆盖率并确保 API 的质量,我们不会直接从 Postman 开始,首先,我们将了解要测试的 API,然后开始思考如何实现自动化。

以下是帮助我们完成此过程的工作流程:

编写测试的工作流程

让我们开始了解我们将要测试的 API。在本教程中,我们将使用上一教程中的 API,即Books 的免费 API。从 Swagger 中可以看出,我们没有针对此 API 的使用制定任何明确的规则,但这并不意味着我们不会对其进行测试。在创建测试时,我建议您使用如下表格:

端点 方法 测试 预期结果
/图书 得到 成功搜索所有书籍 返回状态码 200

所有请求的响应主体模型为:

 {
    "id": 0,
    "title": "string",
    "description": "string",
    "pageCount": 0,
    "excerpt": "string",
    "publishDate": "2023-10-14T18:44:34.674Z"
  }
Enter fullscreen mode Exit fullscreen mode

根据响应主体,我们可以做不同的测试,例如:

端点 方法 测试 预期结果
/图书 得到 成功搜索所有书籍 - 返回状态码 200
- 响应主体包含所有非空字段
- pageCount 值为整数

对其他端点使用相同的策略:

端点 方法 测试 预期结果
/图书 得到 成功搜索所有书籍 - 返回状态码 200
- 响应主体包含所有非空字段
- pageCount 值为整数
/图书/{id} 得到 成功搜索特定书籍 - 返回状态码 200
- 响应主体包含所有非空字段
- pageCount 值为整数
/图书/{id} 得到 使用无效 ID 搜索特定书籍 - 返回状态码 404
- 错误信息标题应为“未找到”
/图书 邮政 成功创作一本书 - 返回状态码 200
- 响应主体包含所有非空字段
- pageCount 值为整数
/图书 邮政 创建一本没有正文请求的书 - 返回状态码 415
/图书 邮政 创建带有空正文请求的书籍 - 返回状态码 200
- body 响应字段使用默认配置填充
/图书/{id} 成功更新书籍 - 返回状态码 200
- 响应主体包含所有非空字段
- pageCount 值为整数
/图书/{id} 更新传递不存在的 ID 的书籍 - 返回状态码 404
/图书/{id} 更新图书时传递无效 ID - 返回状态码 400
/图书/{id} 使用空正文请求更新书籍 - 返回状态码 200
/图书/{id} 删除 成功删除书籍 - 返回状态码 200
/图书/{id} 删除 删除 ID 不存在的书籍 - 返回状态码 404

您可以进行更多与验证正文请求和我们需要发送的参数相关的测试,我建议您尝试一下!

编写测试

使用 Postman 创建测试的过程如下:

  • 我们将创建该系列
  • 根据我们的测试生成我们的请求
  • 开始使用 JavaScript 和 Postman 中的 Snippets 编写测试。

请求

创建请求后,我们开始编写测试。如我们所见,对于所有测试,我们都会验证状态码。为此,我们将在每个请求的“测试”选项卡上编写以下方法:


pm.test("Status code is 2XX", function () {
    pm.response.to.have.status(2XX); // change the status to what is expected in the test
});

Enter fullscreen mode Exit fullscreen mode

以下测试是我们大多数测试中常见的,即验证响应主体是否为空,为此,首先,我们将响应主体转换为 json 格式,然后使用以下命令验证响应主体的字段是否为空not.eql(null)

pm.test("Validating if the body response isn't null", function () {
    var response = pm.response.json();
    pm.expect(response.id).not.eql(null);
    pm.expect(response.title).not.eql(null);
    pm.expect(response.description).not.eql(null);
    pm.expect(response.pageCount).not.eql(null);
    pm.expect(response.excerpt).not.eql(null);
    pm.expect(response.publishDate).not.eql(null);

});
Enter fullscreen mode Exit fullscreen mode

我们可以执行的其他测试是验证响应的内容,让我们验证响应中的 pageCount 是否是整数值:

pm.test("Type of content of pageCount", function () {
    var response = pm.response.json().pageCount; // get the value of the response body 
    pm.expect(Number.isInteger(response)).to.be.true;

});
Enter fullscreen mode Exit fullscreen mode

现在我们知道了测试将如何进行,让我们实现它们并运行我们的集合:

试运行结果

您可以在此处查看测试的详细信息

使用模式来验证身体反应

Postman 允许你验证响应体的结构。首先,我们来创建 API 的结构:

{

    "id":{
        "type": "number"
    },
    "title":{
        "type": "string"
    },
    "description":{
        "type": "string"
    },
    "pageCount":{
        "type": "number"
    },
    "excerpt":{
        "type": "string"
    },
    "publishDate":{
        "type": "string"
    },
    "required": ["id", "title", "description", "pageCount", "excerpt", "publishDate"]
}
Enter fullscreen mode Exit fullscreen mode

现在,我们将这个值作为变量保存在我们的环境中,我创建了一个名为Tests的新变量:

环境变量

现在让我们更新我们的测试,我们将调用这个变量并使用该值来使用Tiny Validator库验证我们的身体:


var schema = pm.environment.get("apiSchema");
pm.test("Validating the body response schema and type of pageCount", function () {
    var response = pm.response.json();
    response.forEach(response, function(item){ 
        pm.expect(tv4.validate(item, schema)).to.be.true;
        pm.expect(tv4.validate(item.pageCount, {"type": "number"})).to.be.true;
    });
});
Enter fullscreen mode Exit fullscreen mode

这是减少我们需要验证某些 API 模式的时间的替代方法。

使用 Newman 运行我们的测试

在上一篇教程中,我们学习了如何通过 Postman 界面执行集合,现在我们将学习如何通过命令行运行它们。为此,首先需要安装 Newman。Newman
Postman 的命令行集合运行器。它使您能够直接从命令行运行和测试 Postman 集合。它在构建时充分考虑了可扩展性,以便您可以将其与您的持续集成 (CI) 服务器和构建系统集成。

设置

Newman 基于 Node.js 构建。要运行 Newman,请确保已安装 Node.js。请按照以下 步骤下载 适用于你的 CI 平台的 Node。

如果您已经安装了节点,请确保您使用的是 Node.js v4 或更高版本:

node -v
Enter fullscreen mode Exit fullscreen mode

在您的系统上全局安装 Newman,这样您就可以从任何地方运行它:

npm install -g newman
Enter fullscreen mode Exit fullscreen mode

执行测试

要使用 Newman 运行测试,首先导出集合和环境文件:

出口托收

为此,请单击集合,然后单击“导出”。环境的导出过程相同。导出后,转到集合命令行文件夹并运行以下命令:

newman run apiBooks-final.json -e test.postman_environment.json
Enter fullscreen mode Exit fullscreen mode

您将收到此集合内的所有测试结果:

运行结果1

运行结果2

我们可以看到:

  • 测试名称
  • 执行时长
  • 平均响应时间
  • 哪些测试通过,哪些测试失败

生成报告

为了帮助我们更好地查看测试结果,可以使用HTML 报告库来生成包含运行结果的 HTML 文件。安装方法如下:

npm install -g newman-reporter-html 
Enter fullscreen mode Exit fullscreen mode

现在,在执行测试时,我们需要告知我们想要在 html 文件中获取结果:

newman run apiBooks-final.json -e test.postman_environment.json -r html 
Enter fullscreen mode Exit fullscreen mode

Newman 将生成一个包含报告文件的文件夹,报告将显示如下:

HTML报告

HTML 报告2

您可以生成其他类型的报告,我建议您查看newman 包来选择哪一个适合您的需要。

结论

本文将指导您如何开始编写 API 测试,如何使用 Postman 自动执行测试,以及如何使用 Newman 通过命令行运行测试并生成 HTML 报告。您可以在此处
访问本示例中使用的测试集  希望本文对您有所帮助。

如果您有任何疑问,请随时与我联系! 

Bisous,à la semaine prochaine 💅🏼

文章来源:https://dev.to/m4rri4nne/boost-your-experience-with-postman-part-ii-5cde
PREV
提升 Postman 使用体验 - 第一部分
NEXT
使用 Spring-Boot 进行身份验证和授权