集成测试与诊断输出
选择无沙箱、Docker 或 Podman 测试,并保留具体用例输出。
This page has not been translated into English yet. The original Chinese version is shown below.
集成测试从外部驱动 CLI,验证单元测试覆盖不到的进程、工具和环境组合。测试入口集中在上游 integration-tests,不能把 npm run test 与全部集成测试视为同一套检查。
选择运行模式
| 命令 | 行为 |
|---|---|
| npm run test:e2e | 当前别名启用 VERBOSE=true、KEEP_OUTPUT=true,并运行无沙箱集成测试 |
| npm run test:integration:sandbox:none | 以 QWEN_SANDBOX=false 运行 integration-tests |
| npm run test:integration:sandbox:docker | 构建 sandbox 后,以 Docker 模式运行 |
| npm run test:integration:sandbox:podman | 以 Podman 模式运行 |
| npm run test:integration:all | 顺序运行 none、Docker、Podman 三组 |
test:e2e 并不等于三种沙箱全部执行。容器模式要准备对应运行时和镜像;涉及真实模型的测试还需要相应认证与访问条件。
当前 scripts 另有 SDK、CLI 和交互场景入口,以及明确列出用例的 no-ak 测试组合。不能仅凭 no-ak 名称就认为任意 integration test 都不访问提供商。
缩小失败范围
按文件名筛选:
npm run test:e2e list_directory write_file按测试名称匹配:
npm run test:e2e -- --test-name-pattern "reads a file"先选能重现问题的用例和实际运行模式。无沙箱通过后,仍需在问题发生的容器模式复核;反之也不能用容器中的成功证明宿主权限配置正确。
保留输出
KEEP_OUTPUT=true 将输出保存在 .integration-tests 下,每次运行、测试文件和用例使用独立目录,具体输出位于 output.log。VERBOSE=true 同时把输出显示到终端;两者可以一起使用。
保留失败用例的完整输出,区分模型返回、工具执行失败和测试断言失败。重试后通过也应保留初次失败线索,不把偶发问题直接当成已修复。
CI 是否会自动执行
旧集成测试说明提到 PR 和 merge queue,但当前 e2e.yml 的触发包括 main、feat/e2e/** 推送、每日 04:00 UTC 调度及手动运行。该工作流当前没有 pull_request 或 merge_group 触发,不应承诺每个 PR 都有这套完整 E2E 门禁。
主 ci.yml 另有自己的触发、profile 和 job 条件。判断一次变更实际得到哪些验证,要看该次运行的 jobs 和跳过原因,不能从工作流名称推断全平台、全模式都已执行。