测试
OpenClaw 包含三个 Vitest 测试套件(单元/集成、端到端、实时)以及一小组 Docker 运行器。 本文档是一份"我们如何测试"的指南: 每个套件覆盖什么(以及它刻意不覆盖什么) 常见工作流程应运行哪些命令(本地、推送前、调试) 实时测试如何发现凭证并选择模型/提供商 如何为现实中的模型/提供商问题添加回归测试 快速开始 日常使用: 完整检查(推送前的预期流程):pnpm build && pnpm check && pnpm test 当你修改测试或需要额外的信心时: 覆盖率检查:pnpm test:coverage 端到端套件:pnpm test:e2e 调试真实提供商/模型时(需要真实凭证): 实时套件(模型 + Gateway 网关工具/图像探测):pnpm test:live 提示:当你只需要一个失败用例时,建议使用下文描述的允许列表环境变量来缩小实时测试范围。 测试套件(在哪里运行什么) 可以将这些套件理解为"逐渐增强的真实性"(以及逐渐增加的不稳定性/成本): 单元/集成测试(默认) 命令:pnpm test 配置:vitest.config.ts 文件:src/**/*.test.ts 范围: 纯单元测试 进程内集成测试(Gateway 网关认证、路由、工具、解析、配置) 已知问题的确定性回归测试 预期: 在 CI 中运行 不需要真实密钥 应该快速且稳定 端到端测试(Gateway 网关冒烟测试) 命令:pnpm test:e2e 配置:vitest.e2e.config.ts 文件:src/**/*.e2e.test.ts 范围: 多实例 Gateway 网关端到端行为 WebSocket/HTTP 接口、节点配对和较重的网络操作 预期: 在 CI 中运行(当在流水线中启用时) 不需要真实密钥 比单元测试有更多活动部件(可能较慢) 实时测试(真实提供商 + 真实模型) 命令:pnpm test:live 配置:vitest.live.config.ts 文件:src/**/*.live.test.ts 默认:通过 pnpm test:live 启用(设置 OPENCLAW_LIVE_TEST=1) 范围: “这个提供商/模型用真实凭证今天实际能工作吗?” 捕获提供商格式变更、工具调用怪癖、认证问题和速率限制行为 预期: 设计上不适合 CI 稳定运行(真实网络、真实提供商策略、配额、故障) 花费金钱/使用速率限制 建议运行缩小范围的子集而非"全部" 实时运行会加载 ~/.profile 以获取缺失的 API 密钥 Anthropic 密钥轮换:设置 OPENCLAW_LIVE_ANTHROPIC_KEYS="sk-...,sk-..."(或 OPENCLAW_LIVE_ANTHROPIC_KEY=sk-...)或多个 ANTHROPIC_API_KEY* 变量;测试会在遇到速率限制时重试 我应该运行哪个套件? 使用这个决策表: ...