如何使 Postman 集合和测试与 CI 流中的 swagger/open api 规范和 git 保持同步

Posted

技术标签:

【中文标题】如何使 Postman 集合和测试与 CI 流中的 swagger/open api 规范和 git 保持同步【英文标题】:How to keep Postman collections and tests in sync with swagger/open api specs and git in a CI flow 【发布时间】:2018-12-30 06:22:28 【问题描述】:

我们正在研究是否可以将 Postman Test Runner 和 Neuman 合并到我们的 Jenkins CI 服务器的 api 测试流程中。

我的问题是:一旦我将一个 swagger/open api 文件导入到邮递员集合中,如何使多个团队成员的更改保持同步?

例如,如果团队成员将新的 api 端点添加到 swagger 文件中,我们是否必须将 swagger 文件重新导入到邮递员集合中覆盖它?我们希望继续使用 swagger 文件作为唯一的事实来源,因此希望与邮递员集合保持同步。理想情况下,我们会更新 swagger 文件,将其提交到 git 并将其更改同步到邮递员。

在邮递员中创建的测试怎么样?有没有办法把它检查到 git 中?我们是否必须在每次测试更改后导出集合并将其签入 git,并在每次 git pull 后将更改重新导入邮递员集合?

看起来,因为某些在线邮递员功能是为共享而构建的 - 想法是您可以直接在邮递员客户端中对集合进行更改,然后将其共享给其他邮递员客户端?如果是这样,是否可以添加一个挂钩来自动将这些更改同步到 git?

【问题讨论】:

【参考方案1】:

按顺序回答您的问题:

一旦我将一个 swagger/open api 文件导入到邮递员集合中,如何 我可以让多个团队成员的更改保持同步吗?

为了使您的收藏保持同步,每个人都需要登录并使用团队工作区。从 Postman 6.2 开始,单个团队工作区现在是免费的。 https://www.getpostman.com/docs/v6/postman/workspaces/intro_to_workspaces

例如,如果团队成员将新的 api 端点添加到 swagger 文件中,我们是否必须将 swagger 文件重新导入到邮递员集合中覆盖它?

取决于您生成文件的方式。如果它是使用运行时工具(例如 NSwag、Swashbuckle)生成的,那么您很可能最终需要覆盖该文件。如果您有一个 swagger.json 您的团队正在直接维护,您可以修改 Postman 提供的脚本以使您的定义与 Postman 保持同步:http://blog.getpostman.com/2018/03/02/sync-your-specs/

在邮递员中创建的测试怎么样?有没有办法让它检查到 git 中?

是的。您可以导出包含您的测试的 Postman 集合并将其签入 Git。

如果是这样,是否可以添加一个挂钩来自动将这些更改同步到 git?

Answered on SO here.

【讨论】:

以上是关于如何使 Postman 集合和测试与 CI 流中的 swagger/open api 规范和 git 保持同步的主要内容,如果未能解决你的问题,请参考以下文章

Postman之API测试使用全指南

PostMan在项目中的应用

PostMan在项目中的应用

Postman中的全局/环境/集合变量的使用及优先级

postman校验脚本与newman

postman之基本操作(创建集合、请求、环境变量)