使用 Postman 和 Newman 进行 CI/CD 中的 API 测试
我将向您展示如何使用Postman测试受保护的 GraphQL API,以及如何使用GithubActions 中的Newman运行测试集合!
注:本文是开源全栈应用程序的一部分
Postman 可以作为 GraphQL IDE 吗?
Postman是一款知名的工具,可以帮助您测试 API。
Postman 支持:
- 休息
- WebSocket
- GraphQL
虽然还没有,但我认为它有可能成为 GraphQL 的强大工具。
导入 GraphQL SDL
这必须手动完成!(很遗憾)Postman 不支持模式自省。
预请求脚本
该Pre-Request术语Tests可以在多个范围内找到。
范围只是一个地方,你可以在那里找到它们。
- 范围级别集合
- 节级文件夹
- 范围级别请求
是否有初始脚本?
Postman没有在启动时运行一次的初始化脚本!你可以使用变量来解决这个问题!
如何使用 OAuth 登录?
这取决于你是手动测试还是自动测试。
如果你不加注意地运行CI/CD脚本,你就需要编写脚本,但这对于一些oidc有严格规则并会检查所有安全方面的服务提供商来说可能很困难。
为了进行测试,您可以定义一个特定的 OIDC client_id:Postman。您可以简单地对其进行保护ResourceOwnerPassword,并为其创建一个测试用户。
图片来自Okta
在这种情况下,安全性ResourceOwnerPassword完全得到保障:
- 您有一个特殊的客户端(oidc 客户端),您需要
Secret使用它。 - 测试用户仍需提供他的用户名
name和密码password。 - 仅在特定标志下激活。
- 不会公开使用
- 可能仅限于特定来源
请求访问令牌
要请求新的令牌,您必须调用asynchronousoidc 令牌端点。
Pre-scripts:
1)检查你是否拥有上次运行的令牌
2)验证令牌的生命周期。
- 令牌有效 -> 使用现有令牌
- 令牌已过期 -> 请求新的令牌
该OAuth_Token_Exchange函数触发请求pm.sendRequest(...)。
GraphQL响应的验证
GraphQL 返回结果json后,您需要创建一个辅助脚本来验证它。该脚本会逐个验证属性,并可以选择忽略某些属性。
导出测试集
为此,您需要导出集合和变量,并在无头ci/cd运行器中使用导出的数据。
纽曼无头奔跑者
Newman 是 Postman 集合的命令行运行器。你可以在GitHub上找到它。
安装方式:npm install -g newman.
从控制台(终端)运行测试集:
(我们使用该--insecure标志是因为我们使用了不受信任的开发者证书)。
这是输出结果的一个示例。
集成到构建和 CI/CD 中
该演示应用程序Nuke用于构建自动化。
Nuke 是一个控制台应用程序,其中包含所有已定义的构建逻辑Targets,并允许您跨平台运行和.yaml为CI/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














