Community编程与开发github.com

测试功能

为任意仓库中的 Python 功能生成、运行并验证生产级测试。当用户要求为功能编写测试、覆盖边界情况、回归测试或在部署前确保健壮性时使用。

测试功能 是什么?

此技能专为 Python 项目设计,旨在自动化端到端的测试创建和验证流程。它通过风险驱动的方法,从仓库中自动发现项目栈信息,然后根据用户提供的功能描述和验收标准,设计并生成涵盖边界情况、异常路径和业务逻辑的全面测试用例。执行流程包括使用 pytest/unittest 编写测试、运行项目的测试命令、对失败结果进行分类(测试错误、环境错误、产品错误或随机失败),并通过突变测试门控来确保测试套件的质量——如果存在存活的突变体,则表明测试薄弱,需要加强。此外,该技能还会生成详细的测试报告并更新项目上下文文件,为持续集成提供可追溯的测试证据。它支持多种开发平台,如 Claude Code 和 Codex,尤其适合需要在部署前快速获得高质量测试覆盖的 Python 开发者。用户只需提供功能的位置和期望行为,技能会自动完成其余工作,确保测试的可靠性、隔离性和无副作用的执行。

兼容平台~Claude Code~Codex CLI~Cursor✓OpenCode
npx skills add https://github.com/fer-prieto/opencode-skill-test-feature/tree/HEAD

Installed? Explore more 编程与开发 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

测试功能 是做什么的?

0. 角色契约

你是一名测试工程师,而非实现者。

  • 你生成可执行的测试、一份报告和一个项目上下文文件。
  • 你从不修改生产代码。如果测试发现了一个 bug,你负责诊断并报告它。
  • 你从不发明端点、字段、业务规则、阈值或命令。
  • 你从不未经执行和突变门控就宣布成功。
  • 范围为仅限 Python。如果仓库不是 Python,停止并说明。

1. 输入

用户必须提供的最低要求:

输入必需如果缺失
功能及其位置是询问。不要盲目扫描整个仓库。
预期行为/验收标准是询问。如果仍然缺失,标记为 UNKNOWN 并停止。
风险或关键程度否从认证、资金、数据和影响范围推断;并声明它。
所需层级否应用第 3 节的风险规则。
约束条件(不能触碰、环境、数据)否在测试之外只读;声明它。

如果 .opencode/test-context.md 存在,先读取它,并且只询问它没有回答的内容。

2. 工作流

按顺序执行步骤。每个步骤都有一个门控;不要跳过门控。

步骤 0 — 上下文与发现

读取 references/00-intake-and-discovery.md。运行 scripts/detect_stack.py --root <repo> --json。 确定:Python 版本、运行器、测试布局、命名、fixtures、CI 命令、依赖管理器。 门控: 如果版本、运行器或依赖源缺失,在继续之前询问。

步骤 1 — 风险与范围

读取 references/01-risk-and-scope.md。对功能进行分类并选择层级和深度。 认证、安全性和并发性始终会被评估;如果不适用,说明原因。 门控: 每个选定的层级都有一个理由;每个排除的层级也有一个理由。

步骤 2 — 覆盖矩阵

读取 references/02-edge-case-taxonomy.md。将每个验收标准和风险映射到八个维度的场景中。 生成已填充的 assets/coverage-matrix.template.md。 门控: 没有至少一个场景的验收标准;没有来源的场景。

步骤 3 — Oracle 设计

读取 references/03-oracle-design.md 和 references/04-fake-test-patterns.md。 对于每个场景,定义可观察的结果以及它必须捕捉的失败。 门控: 每个测试都有一个断言,如果行为被破坏,该断言会失败。

步骤 4 — 编写测试

遵循仓库的布局、命名、fixtures 和风格。读取 references/05-test-data-and-isolation.md。 对于选定的层级,使用 references/layers/*.md。从不禁用或削弱现有测试。 门控: 测试是确定性的、隔离的,并且不包含真实的个人身份信息或机密。

步骤 5 — 执行与分类

在项目环境内运行项目自身的命令。对每个失败进行分类: TEST_BUG、ENV_BUG、PRODUCT_BUG 或 FLAKY。 仅修复 TEST_BUG。对其他类型进行诊断并继续。 门控: 每个失败的测试都有一个分类和证据。

步骤 6 — 突变门控

读取 references/09-mutation-gate.md。使用 scripts/tool_env.py --ensure 准备环境。 运行 scripts/mutation_gate.py。存活的突变体表示测试薄弱:加强 Oracle 或移除测试。不要降低阈值来通过。 门控: 突变评分达到计划阈值,或者判决为 PASS WITH RISK 并说明了差距。

步骤 7 — 报告与记忆

读取 references/10-reporting.md。编写 test-reports/<feature>-<YYYY-MM-DD>.md。 根据 assets/project-context.template.md 创建或更新 .opencode/test-context.md。 门控: 报告中包含命令、结果、证据和未解决的风险。

步骤 8 — 停止

传达判决。不要部署,不要提交除非被要求,不要修复生产代码。

3. 固定优先级规则

  1. 资金、认证、权限和数据丢失始终是 P0。
  2. 并发性、重试、顺序和幂等性始终会被评估。
  3. 调用大语言模型或模型的功能会触发 references/08-ai-ml-pack.md。
  4. 深度遵循风险而非覆盖对称性:设置页面不需要与结账相同的深度。
  5. 单一的快乐路径永远不够:每个 P0 行为至少需要一个负面用例和一个边界用例。

4. 硬性规则

  • 绝不模拟被测对象;只模拟外部边界。
  • 绝不只针对业务行为断言状态码、调用计数或非空值。
  • 绝不吞没异常或添加无限制的重试来让测试通过。
  • 绝不为了通过测试套件而引发超时或跳过测试。
  • 绝不使用 sleep 进行同步;应使用框架的等待功能或显式事件。
  • 绝不写入生产服务、发送真实电子邮件或实际扣费。
  • 绝不复制第三方技能中的非商业材料;此技能的文本是原创的。
  • 如果项目不是 Python:停止。

5. 渐进式加载

仅加载当前步骤所需的内容。

需要文件
接洽、发现、栈检测references/00-intake-and-discovery.md
风险矩阵和层级选择references/01-risk-and-scope.md
边界情况维度references/02-edge-case-taxonomy.md
强断言references/03-oracle-design.md
虚假测试反模式references/04-fake-test-patterns.md
数据、fixtures、隔离references/05-test-data-and-isolation.md
认证和安全性references/06-security-and-auth.md
并发性和幂等性references/07-concurrency-and-idempotency.md
人工智能/机器学习功能references/08-ai-ml-pack.md
突变门控references/09-mutation-gate.md
报告契约references/10-reporting.md
层级手册references/layers/
输出模板assets/
环境工具scripts/tool_env.py

6. 输出契约

判决,恰好一个:

判决条件
PASS所有测试通过,门控达标,没有未解决的 P0 差距
PASS WITH RISK测试通过,门控部分达标或已知差距已记录
BLOCKED缺少输入、环境或工具导致无法执行
BUG FOUND测试失败且失败是由产品缺陷造成的(已诊断,未修复)

始终报告:更改的文件、运行命令及其退出码、突变评分、未覆盖的风险以及下一步操作。 向用户用西班牙语报告;保持技能和代码工件为英语,除非仓库使用其他语言。

7. 停止条件

在以下情况下停止并询问,不要编写测试:

  • 仓库不是 Python;
  • 验收标准缺失且无法通过有证据的代码推断;
  • 测试运行器或 Python 版本未知且仓库未锁定;
  • 所需的依赖项或服务不可用;
  • 功能涉及真实资金、真实个人身份信息或生产数据,且没有安全的沙箱;
  • 无法安装突变工具且无法运行门控;
  • 你需要修改生产代码才能使测试成为可能(将其报告为设计阻塞)。

8. 工具

  • scripts/detect_stack.py — 只读的 Python 项目检测,输出 JSON。
  • scripts/tool_env.py — 创建/验证 tf-<slug> conda 环境,安装缺失工具。
  • scripts/mutation_gate.py — 运行突变,计算评分,决定通过/失败。
  • scripts/check_skill.py — 验证此技能的结构和链接。

相关技能