Exécutez n'importe quel Skill dans Manus
en un clic
en un clic
Exécutez n'importe quel Skill dans Manus en un clic
Commencer$pwd:
$ git log --oneline --stat
stars:1 994
forks:99
updated:16 mai 2026 à 17:19
Explorateur de fichiers
SKILL.md
| name | project-test |
| description | 使用此技能维护项目测试文件 |
按这套规则做项目测试:先证明可观察行为,再补实现细节;先加载通用判断,再按任务逐步读取对应技术栈示例。
Arrange -> Act -> Assertflowchart TD
A["收到测试任务"] --> B["确认被测行为与唯一权威状态"]
B --> C{"主要技术栈"}
C -->|Python / pytest| D["读 references/python-pytest.md"]
C -->|TypeScript / Vitest| E["读 references/typescript-vitest.md"]
C -->|React / DOM / Hook| F["读 references/react-renderer.md"]
C -->|跨进程 / 协议 / 事件边界| G["读 references/cross-stack-boundaries.md"]
B --> H{"是在整改旧测试吗"}
H -->|是| I["读 references/test-audit.md 与 anti-patterns.md"]
H -->|否| J["直接写最小有效测试"]
D --> K["Red -> Green -> Refactor"]
E --> K
F --> K
G --> K
I --> K
K --> L["执行对应验证"]
$find_docs 查最新官方文档。Red -> Green -> Refactor。test_it_works、should handle case 这类空话。优先断言这些公开结果:
| 优先对象 | 典型例子 |
|---|---|
| 输入输出 | 返回值、抛错、生成内容 |
| 最终状态 | 状态字段、对象快照、可读取配置 |
| 公开事件 | 事件类型、事件载荷、回调结果 |
| 持久化结果 | 数据库记录、写入文件、缓存对外视图 |
| UI 结果 | DOM 文本、按钮状态、可见状态、用户触发后的公开回调 |
| 运行态信号 | store 快照、change signal、事件 topic、初始化阶段载荷 |
如果一个断言只能说明“内部刚好这么实现”,就先停下来改写测试。
| 边界 | Python 侧推荐 | TypeScript / React 侧推荐 |
|---|---|---|
| 文件系统 | pyfakefs 的 fs | 用小型内存适配器或 mock 宿主 API,避免真实用户目录 |
| SQLite | :memory: 或等价内存数据库 | 不直接碰数据库,断言 API 载荷或 store 快照 |
| 网络 / 外部 SDK | patch 使用点或 fake client | vi.mock 使用点,断言公开结果后再校验调用 |
| 时间 / 随机数 | patch 时间源或注入 clock | vi.useFakeTimers()、注入 clock 或稳定 id |
| 事件流 | 记录 topic 与 data | 用事件流 stub 触发公开事件监听 |
| React 状态 | 不适用 | 通过 DOM、hook 探针或 provider 快照断言 |
| 宿主桥接 | 不绕过公开桥接层 | mock 桥接适配器,不在 UI 测试里直连系统 API |
| 任务 | 先读 |
|---|---|
| Python 单测、service、数据访问、线程任务 | references/python-pytest.md |
| TypeScript 纯函数、状态容器、selector、异步调度 | references/typescript-vitest.md |
| React Hook、Context、页面状态、组件交互 | references/react-renderer.md |
| 后端与前端、宿主与 UI、协议与事件流边界 | references/cross-stack-boundaries.md |
| 检查映射关系、逐用例审查、清理低价值测试、业务透明重构 | references/test-audit.md |
| 整改旧白盒测试、mock 滥用、测试组织失焦 | references/anti-patterns.md |
改旧测试时,按这个顺序最省事:
__new__、call_args、call_args_list、tmp_path、mock_open、print\(、vi.mock 套娃、只测实现调用。conftest.py,前端重复准备逻辑收进同目录 helper 或测试内工厂。Get-ChildItem -LiteralPath tests -Recurse -File -Filter "*.py" |
Select-String -Pattern "__new__|call_args|call_args_list|tmp_path|mock_open|print\("
Get-ChildItem -LiteralPath <ts-source-root> -Recurse -File -Include "*.test.ts","*.test.tsx" |
Select-String -Pattern "toHaveBeenCalled|mock\\.calls|vi\\.mock|console\\."
uv run pytest tests/ -v
npm run test
Arrange / Act / Assertconftest.py,前端 helper 没有过早全局化| 变更类型 | 最低验证 |
|---|---|
| Python 测试或实现 | 项目格式化 -> Python lint -> Python 测试 |
| 协议、事件流或初始化契约 | 后端测试 + 前端消费测试 + 契约相关回归 |
| TypeScript 纯逻辑 | 项目格式化 -> TS lint -> Vitest -> TypeScript 类型检查 |
| React / UI 状态 | 前端格式化、lint、Vitest、类型检查,并按需做视觉或交互审计 |
| 宿主桥接或共享契约 | 宿主侧类型检查 + UI 侧消费测试 |