发布于 2026-01-06 0 阅读
0

使用 Postman 和 Newman 进行 CI/CD 中的 API 测试

使用 Postman 和 Newman 进行 CI/CD 中的 API 测试

我将向您展示如何使用Postman测试受保护的 GraphQL API,以及如何使用GithubActions 中的Newman运行测试集合!

注:本文是开源全栈应用程序的一部分

Postman 可以作为 GraphQL IDE 吗?

Postman是一款知名的工具,可以帮助您测试 API。

Postman 支持:

  • 休息
  • WebSocket
  • GraphQL

虽然还没有,但我认为它有可能成为 GraphQL 的强大工具。

导入 GraphQL SDL

这必须手动完成!(很遗憾)Postman 不支持模式自省。

Postman 复制 SDL 模式

预请求脚本

Pre-Request术语Tests可以在多个范围内找到。

Postman tets 与脚本

范围只是一个地方,你可以在那里找到它们

  • 范围级别集合
  • 节级文件夹
  • 范围级别请求

是否有初始脚本?

Postman没有在启动时运行一次的初始化脚本!你可以使用变量来解决这个问题!

Postman 初始化脚本

如何使用 OAuth 登录?

这取决于你是手动测试还是自动测试。

如果你不加注意地运行CI/CD脚本,你就需要编写脚本,但这对于一些oidc有严格规则并会检查所有安全方面的服务提供商来说可能很困难。

为了进行测试,您可以定义一个特定的 OIDC client_id:Postman。您可以简单地对其进行保护ResourceOwnerPassword,并为其创建一个测试用户。

OAuth授权流程图片来自Okta

在这种情况下,安全性ResourceOwnerPassword完全得到保障:

  • 您有一个特殊的客户端(oidc 客户端),您需要Secret使用它。
  • 测试用户仍需提供他的用户名name和密码password
  • 仅在特定标志下激活。
  • 不会公开使用
  • 可能仅限于特定来源

请求访问令牌

要请求新的令牌,您必须调用asynchronousoidc 令牌端点。

逻辑流程

使用密码资源所有者请求令牌

Pre-scripts

1)检查你是否拥有上次运行的令牌
2)验证令牌的生命周期。

  • 令牌有效 -> 使用现有令牌
  • 令牌已过期 -> 请求新的令牌

Postman 异步助手

OAuth_Token_Exchange函数触发请求pm.sendRequest(...)

Postman 请求来自 OIDC 的访问令牌

GraphQL响应的验证

GraphQL 返回结果json后,您需要创建一个辅助脚本来验证它。该脚本会逐个验证属性,并可以选择忽略某些属性。

验证 GraphQL 响应

导出测试集

为此,您需要导出集合和变量,并在无头ci/cd运行器中使用导出的数据。

导出收藏集:
出口邮递员收款

出口环境:
出口邮递员环境

纽曼无头奔跑者

Newman 是 Postman 集合的命令行运行器。你可以在GitHub上找到它

安装方式:npm install -g newman.

从控制台(终端)运行测试集:

出口邮递员环境

(我们使用该--insecure标志是因为我们使用了不受信任的开发者证书)。

这是输出结果的一个示例。

出口邮递员环境

集成到构建和 CI/CD 中

该演示应用程序Nuke用于构建自动化。

Nuke 是一个控制台应用程序,其中包含所有已定义的构建逻辑Targets,并允许您跨平台运行和.yamlCI/CD管道生成。

让我们把测试放在Newman前面Cypress

端到端示例

为了更好地理解它Target_E2E_Tests是什么,让我们看一下整个流程以及不同目标之间的依赖关系。

目标定义了具有特定操作的命名操作。

核电站建造计划

Github-Action 运行:

核电站建造计划

存储库

您可以在开源项目中找到该应用程序的完整源代码,包括身份验证、分布式日志记录、跟踪和监控等功能。

Github仓库:
https://github.com/damikun/trouble-training

Newman 源代码子链接(位于 postman 文件夹下):
https://github.com/damikun/trouble-training/tree/main/Src/Tests

文章来源:https://dev.to/damikun/api-testing-with-postman-and-newman-from-cicd-2p0f