用途:为 Speakeasy 生成的 SDK 搭建并运行测试,支持三种方式:契约测试、自定义 Arazzo 工作流测试、针对实时 API 的集成测试。适用于配置自动化测试、通过 gen.yaml 启用契约测试、编写多步 API 流程测试、调试 ResponseValidationError 或测试失败。
主要能力:契约测试由 OpenAPI 规范自动生成,创建符合规范的 mock 服务器并校验 SDK 的请求与响应,覆盖 TypeScript、Python、Go、Java;自定义 Arazzo 测试支持多步工作流、成功条件、环境变量与操作链;集成测试使用 SDK 工厂模式对真实 API 验证,并可接入 GitHub Actions CI。
必要用法:在 gen.yaml 中添加 generation.tests.generateTests: true,然后运行 speakeasy run --output console 重新生成,再用 speakeasy test 运行全部测试,可用 --target 指定目标、--verbose 调试。契约测试在启用测试生成后会自动在 GitHub Actions 工作流中运行。自定义测试放在 .speakeasy/tests.arazzo.yaml。敏感值使用 $env.API_TOKEN 语法,勿硬编码密钥。
限制与注意:契约测试当前仅支持 TypeScript、Python、Go、Java;不要直接修改自动生成的测试文件,重新生成会被覆盖;不要在生成环境中对生产系统执行破坏性集成测试;不要跳过契约测试直接做集成测试。常见问题:契约测试报 ResponseValidationError 通常表示规范与 API 不同步,需用最新规范重新生成并加 --verbose 重跑;命令未找到可用 speakeasy update 更新 CLI;mock 服务器启动失败检查端口冲突或先用 speakeasy lint openapi -s spec.yaml 校验规范;自定义 Arazzo 测试不运行需确认文件路径与 operationId 匹配。需先安装并认证 Speakeasy CLI(speakeasy auth login),并具备可用的 SDK 生成配置。