SuperAPI AI 工具集

testing

测试与质量

查看项目

更新于 10-16 10:48

技能介绍

本技能用于为 Scenescape 项目创建 pytest 测试用例,覆盖单元(unit)、功能(functional)、集成(integration)、UI 与 BAT(basic acceptance)五类测试,并配合 SCENESCAPE_SPEC、Zephyr ID 以及正反用例覆盖要求使用。

一、测试理念 始终成对添加正向与反向用例(有效路径 + 无效/边界/边界值)。保持测试独立:自带 setup/teardown,不依赖执行顺序。单元测试对外部依赖使用 mock;功能与 UI 测试通过 fixture 使用真实运行的服务。

二、运行时验证(强制) 创建或修改测试后,须遵循 .github/skills/test-verification-gate/SKILL.md,完成目标选择、镜像新鲜度检查、执行以及通过/失败报告。不得将 lint 或语法检查视为验证。

三、导入路径策略(强制) 在新增或修改的测试文件中添加导入或路径设置前:检查 tests/conftest.py 与最近的本地 conftest.py;确认模块是否已可通过现有 fixture/路径设置导入;若共享引导已设置路径,则直接导入(如 from controller...);仅当不存在共享引导时才添加路径处理。如确需设置,应一次性放入最近的 conftest.py,而非每个测试模块。禁止在单个测试模块中使用 sys.path.insert(...),当等价设置可放入共享 conftest.py 时。编写报告需说明:是否检查过 conftest 文件、导入路径设置位于何处、未添加不必要的逐文件 sys.path.insert。

四、分类路由

  • 单元(Unit):位于 tests/sscape_tests/ 或服务 */tests/;适用隔离的函数/类、无真实服务、使用 mock、宿主 pytest。
  • 功能(Functional):位于 tests/functional/;适用带真实 REST/MQTT/DB 的工作流;使用 SCENESCAPE_SPEC + scenescape_env。
  • 集成(Integration):位于 tests/functional/ 或 tests/system/;适用跨服务流水线;同功能测试。
  • UI:位于 tests/ui/;适用浏览器/Selenium 流程;使用 SCENESCAPE_SPEC + AUTH_BROWSER。
  • BAT:功能/UI + @pytest.mark.basic_acceptance;适用关键路径冒烟测试;同所属父类别。 编写某类别前,先阅读 Additional resources 下对应的参考文档。

五、硬性要求

  • Zephyr ID:每个测试套件/模块都需要 NEX-T#####(@pytest.mark.test_name("NEX-T#####"))。
  • 功能/UI:声明模块级 SCENESCAPE_SPEC = FuncTestSpec(...),并选用 tests/utils/profiles.py 中正确的 ServiceProfile。
  • 命名:文件名为 test_.py,函数名为 test_(pytest 规范)。
  • 重要标记:@pytest.mark.basic_acceptance 用于 BAT / make run_basic_acceptance_tests;@pytest.mark.preserve_db 用于跳过自动 DB 恢复;@pytest.mark.kubernetes_only 在 --backend=docker 时跳过。

六、编写检查清单 在将测试编写任务标记为完成前:已包含 Zephyr ID;已有正反(或边界)用例,除不适用外至少一个反向用例;类别位置与标记正确;功能/UI 已声明 SCENESCAPE_SPEC;单元测试 mock 外部依赖,功能/UI 使用真实栈数据;独立的 setup/teardown 与清晰的 docstring;遵循导入路径策略(已检查 conftest,无多余 sys.path.insert);已按 test-verification-gate 完成运行时验证(或报告阻塞原因)。

七、附加资源 单元测试;功能与集成测试(含多控制器层级 fixture);UI 与 BAT 测试;Conftest 与 Zephyr;运行测试;自动化评测用例:evals/evals.json。