Skip to content

ToAPI v0.2.0 — Postman 兼容 B1+B2:资产脚本与数据驱动 CLI

Choose a tag to compare

@yxpil yxpil released this 24 Oct 06:10
· 17 commits to main since this release

本版重点:Postman 本地兼容前两批(B1 资产与脚本 + B2 数据驱动与 CLI)

B1 与 B2 在同一开发周期完成,合并为一个版本发布(批次范围与验收标准不变,B3/B4 顺延为 v0.3.0/v0.4.0,见 23 号文档 §2)。

B1 资产与脚本

  • Collection v2.1 / Environment 双向互操作:导入 → 导出 → 再导入语义无损;未识别字段 100% 回填 source_json,导入报告列出提示;整个导入一个事务,失败整体回滚。
  • 作用域继承:集合级 auth / variables / pre/post 脚本沿「项目根 → 外层集合 → 内层集合 → 接口」链继承,noauth 可显式覆盖;变量优先级 local > environment > 内层集合 > 外层集合 > 项目根 > global,runtime 最高。
  • pm.* 源码级兼容:pm.test(同步 / Promise / done 三种写法)、pm.test.skip、pm.expect chai 链式子集、pm.response.to.have.*、pm.sendRequest、pm.cookies、pm.environment / pm.collectionVariables / pm.globals / pm.variables 分层读写、pm.info、pm.request 后置只读保护。
  • 动态变量:{{$randomInt}}、{{$guid}}、{{$timestamp}}、{{$isoTimestamp}}、{{$randomEmail}}、{{$randomIPv6}} 等全量清单,同一请求内每次出现独立求值;未知 {{$name}} 保持原样并进未解析清单。
  • 沙箱库:_(lodash)、CryptoJS、uuid.v4/v7、moment、atob/btoa、URL/URLSearchParams、TextEncoder/TextDecoder、定时器与 console;fetch / XMLHttpRequest / require / process 仍然不可用(网络只走 toapi.request.send / pm.sendRequest)。

B2 数据驱动与 CLI

  • 数据驱动 Runner:CSV(RFC 4180 引号/内嵌换行/BOM/CRLF)与 JSON 对象数组,每行一次迭代;--iteration-count 可多于行数并循环取行;pm.iterationData.get/has/toObject 与 {{列名}} 插值同时可用,优先级为「环境 < 数据行 < local」。
  • 流程控制:pm.execution.setNextRequest(名称) 在同轮内跳转,null / 未知名结束本轮,跳转次数设上限防自跳死循环;只在 Runner/CLI 上下文生效,单次发送调用只记警告。
  • toapi run 无头 CLI(纯 Node,无需 Electron 运行时):位置参数导入 Postman 集合到临时库跑完即弃,或 --db 直接跑已有数据库;--env(文件或库内名称)、--globals、--data、--iteration-count、--delay、--timeout、--bail、--quiet、--reporters cli,json,junit,html 与三份导出路径;退出码 0 全通过 / 1 有失败 / 2 用法与 IO 错误,可被 CI 直接判定。
  • GUI:Runner 面板可粘贴数据行并设定迭代次数,明细行显示「第 N/M 轮」,标题行显示轮数与通过率;树与命令面板发起的运行自动带上数据源。断言三态图标(通过 / 失败 / 跳过)在响应面板与 Runner 一致。
  • 数据模型:迁移 004 增加 runner_run.iteration_count 与 runner_item.iteration,明细索引改为 (run_id, iteration, sort_order)。

验证(实测,不是声明)

  • npm run gate:typecheck(tsc ×2)+ eslint + prettier --check + 38 invoke / 3 event 通道契约一致 + 17 个测试文件 / 152 项测试全绿。
  • 新增 42 项用例(合计 17 个测试文件 / 152 项):tests/unit/flow/data-file.test.ts(11)、tests/unit/cli/args.test.ts(9)、tests/unit/cli/reporters.test.ts(6)、tests/integration/flow/data-driven.test.ts(10,真实靶场比对落线查询串)、tests/integration/cli/run.test.ts(6,runCli 端到端跑真实集合 + 三种报告文件 + 退出码 0/1/2)。
  • npm run verify:flow:CDP 驱动真机 Electron。Postman 导入预览/导入报告/环境覆盖、集合 Runner 通过率与跳过标记、数据行「CSV · 2 行 · 迭代 2 次」与 2 个轮次标记、标题行「2 轮迭代」全部断言通过;两轮 console 错误 0。
  • 打包冒烟:node scripts/smoke-package.mjs out/win-unpacked/ToAPI.exe → verdict: PASS(握手版本、标题栏 46px / 3 按钮、LOGO complete=true、三面板 14px、svgIcons=12、emojiInDom=0、页面错误 0)。
  • 未做代码签名:NSIS 安装器的 SmartScreen 提示属预期。

产物

文件 说明
ToAPI-Setup-0.2.0-win-x64.exe NSIS 安装器(未签名)
ToAPI-0.2.0-win-x64.zip 便携版
sha256sums.txt 校验和

无头 CLI 当前从仓库使用:npm run build:electron 后 node bin/toapi.cjs run …(纯 Node ≥ 24,不需要 Electron)。安装包内的 CLI 入口(asar + ELECTRON_RUN_AS_NODE)尚未验证,留待后续版本随发行矩阵一起补。