从 Postman 迁移
导入 Postman 集合及其环境,了解各项如何对应,运行它,再导出回 Postman。
Echolot 会原样读取 Postman 的集合和环境,包括脚本。在本教程中,你会导入一个集合,看看每个部分去了哪里,运行它,并把工作区导出回 Postman。
- 用时: 15 分钟。
- 你需要: 一个 Postman 集合(v2.0 或 v2.1)及其环境,导出为 JSON。手边没有集合?在第 1 步中用 Alpenglow 生成一个。
- 你将学到: 导入、各项如何对应、信任导入的脚本、导入或不导入地运行集合,以及导出。
1. 获取集合
在 Postman 中:打开集合的 ⋯ 菜单,选取 Export,并保持 Collection v2.1。用同样的方式从各自的菜单导出每个环境。
若想改用 Alpenglow 练习:
- 打开 Alpenglow 工作区,选取文件 › 导出工作区…(⇧⌘E)。
- 选择 Postman Collection v2.1。它所在的行会说明 29 个请求中有 21 个适用:Postman 集合没有 WebSocket、Socket.IO、MQTT、gRPC 或 MCP 请求,所以它们会被留下。
- 保持开启包括环境(3 个),然后选取导出…。包含环境时,导出的是一个文件夹:为它命名,然后选取导出。
该文件夹包含 Alpenglow.postman_collection.json,以及每个环境一个的 .postman_environment.json。报告列出了未包含的内容和导出时有变化的内容:Echolot 的检查变成了 pm.test() 脚本,响应捕获不会导出,机密变量只按名称导出,不含其值。
2. 导入
-
创建新工作区:文件 › 新建工作区…(⌥⌘N),命名为
From Postman。 -
选取文件 › 导入…(⇧⌘I)。同时选中集合文件和环境文件,然后选取导入。
你也可以把文件拖到窗口上,或者拷贝集合的 JSON 并粘贴到边栏(⌘V)。
-
报告已导入…列出每个文件及其格式(Postman collection v2.1、Postman environment)和导入的内容。注释会说明哪些内容无法按原样导入。
对于 Alpenglow 的导出,注释会说明有 19 个测试脚本已导入,信任之后才会运行;还有 2 个机密值存入了钥匙串而不是工作区文件:演示密码和 OAuth 客户端密钥,它们是在集合中直接输入的。请求现在以 {{password}} 和 {{orders_with_oauth_2_clientSecret}} 引用它们。选取在边栏中显示。
3. 熟悉对应关系
| Postman 中 | Echolot 中 |
|---|---|
| Collection | 以集合命名的文件夹。它的变量、认证和脚本位于该文件夹的文件夹设置…中 |
| Folder | 文件夹,其描述位于文档中,另有自己的变量、认证和脚本 |
| Request | 请求,存储为单独的文件。raw 正文保持其类型;urlencoded 变成 URL 编码,form-data 变成多部分;GraphQL 正文变成 GraphQL 请求 |
| Environment | “环境”页面上的环境(⌥⌘E)。secret 类型的值存入钥匙串 |
| Collection variables | 集合文件夹的变量。它们对其中的每个请求生效,并且优先于环境的变量 |
| Pre-request Script、Tests | 脚本标签页的请求前脚本和测试脚本,可用于请求、文件夹或工作区 |
pm.* | 相同的 API:pm.test、pm.expect、pm.response、pm.request、pm.environment、pm.variables、pm.collectionVariables、pm.globals、pm.iterationData、pm.sendRequest、pm.cookies、pm.setNextRequest、pm.visualizer,以及较早的 postman.* 和 tests[…] |
require() | lodash、ajv、tv4、crypto-js、uuid、atob 和 btoa |
| Auth | 相同的类型:Basic、Digest、Bearer 令牌、API 密钥、OAuth 1.0、OAuth 2.0(包括高级设置:地址中的令牌、刷新 URL、额外参数)、AWS 签名、JWT Bearer、Hawk、Akamai EdgeGrid、NTLM。ASAP(Atlassian)会变成以同样方式设置的 JWT Bearer。OAuth 2.0 客户端凭据和密码凭据保持不变;隐式授权会变成带 PKCE 的授权码授权,导入报告会说明这一点 |
{{$guid}}、{{$timestamp}}、{{$randomInt}}、{{$randomFirstName}} 以及其他 $random… 值 | 同名的动态值,包括示例数据,另外还有更多 |
| Collection Runner、Newman | 运行器和 echolot run |
| Mock servers | Mac 上的模拟服务器:带示例和示例数据的路由,或 OpenAPI 规范 |
| Monitors | 按计划运行的流程,或 CI 中的 echolot run |
form-data 的文件正文和文件字段不会被导入,因为文件在另一台电脑上:报告会指明每一个,这样你可以在正文标签页中重新选择文件。
4. 信任脚本
脚本能做脚本能做的一切,所以导入的脚本在你同意之前不会运行。
- 打开一个带有测试脚本的请求,例如 Catalog › List products,然后打开它的脚本标签页。一条横幅写着这些脚本来自 Echolot 之外。
- 阅读脚本,然后选取信任脚本。如果你先发送,Echolot 会询问,而信任并发送会在信任的同时立即发送。
- 发送。脚本的
pm.test()结果会出现在响应的测试标签页中,位于脚本下。
脚本在 Echolot 自己的 JavaScript 沙盒中运行,而不是在 Node 中。参见脚本与测试和脚本 API。
5. 运行
- 在页面标题栏中选择你导入的环境,例如 Staging;对于 Alpenglow 的演示 API,则选择无环境。
- 右键点按集合的文件夹并选取运行文件夹。运行器会运行每个请求,包括它的脚本和检查。
命令行工具可以像 Newman 那样不经导入直接运行集合。脚本在那里不经询问就会运行:
echolot run Alpenglow.postman_collection.json --folder catalog --reporter console --reporter junit --out results.xml--env-file 接受 Postman 环境文件,--folder 接受文件夹名称(小写,用连字符连接,例如 catalog、agent-tools),--data users.csv 会按每一行运行一次。机密值来自 ECHOLOT_SECRET_<NAME> 环境变量。
6. 有哪些不同
- 一切皆文件。 工作区是由 TOML 文件组成的文件夹,每个请求一个文件,可直接用于 Git。没有账号,也没有同步服务;团队通过 Git 共享。参见 Git 与团队。
- 自动存储。 没有 ⌘S;边栏底部显示已全部存储。
- 机密绝不写入文件。 机密变量的值保存在这台 Mac 的钥匙串中;文件里只有它的名称。
- 无需代码的检查。 测试标签页无需脚本即可检查状态、标头、JSON 值、耗时、JSON Schema 或 OpenAPI 规范。参见脚本与测试。
- 无需代码的捕获。 无需在测试脚本里写
pm.environment.set("token", …),只要在响应中悬停在该值上,然后选取存入变量…。参见串联请求。 - 不止 HTTP。 同一个工作区包含 WebSocket、Socket.IO、MQTT、gRPC 和 MCP 请求、规范、模拟服务器和流程。
7. 导出回 Postman
- 选取文件 › 导出工作区…,或者右键点按文件夹并选取导出文件夹…。
- 选择 Postman Collection v2.1。面板会说明有多少个请求适用;WebSocket 和其他会话类型会被留下。Insomnia v5 也能承载 WebSocket、Socket.IO 和 gRPC,Bruno 集合则写出一个由
.bru文件组成的文件夹。 - 选择是否包括环境,然后选取导出…。
你在认证或标头字段中输入的凭据会以明文写出,报告会说明有多少个:请先把它们移入机密变量。机密变量只按名称导出,不含其值。参见导出。
后续步骤
- 你的第一个工作区:工作区是如何组织的。
- 导入:还有 Insomnia、OpenAPI、HAR、cURL、Paw 和 Bruno。
- 测试 API 并在 CI 中运行:在流水线中取代 Newman。