SuperAPI AI 工具集

pytest-code-review

测试与质量

查看项目

更新于 10-15 15:23

技能介绍

用途

pytest-code-review 是一个专门用于审查 pytest 测试代码的技能。它适用于评审 test_*.py 文件、检查异步测试函数、核查 fixture,以及审查 mock 与 patch 的使用。其目标是在给出具体审查结论前,先确保对测试代码的关键维度完成有序核查。

主要能力

技能围绕四类常见测试问题进行组织,并分别对应参考文档:

  • 异步测试:async def test_*、AsyncMock、await 模式,参考 references/async-testing.md。
  • Fixtures:conftest.py、factory fixtures、作用域、清理,参考 references/fixtures.md。
  • 参数化:@pytest.mark.parametrize 与 DRY 模式,参考 references/parametrize.md。
  • Mocking:AsyncMock 调用追踪、patch 模式、何时应该 mock,参考 references/mocking.md。

使用方式:按顺序通过审查门禁

技能要求按顺序进行审查,在每一道适用的门禁通过前,不对 pytest 特有问题下断言。各门禁的通过条件如下:

  1. 范围文件:列出所有将要引用的 test_*.py 和 conftest.py;对列表之外的文件不给出发现项。
  2. 异步与同步:对每个范围内文件,说明其是否使用 async def test_* / await;如果是,在批评异步用法前先打开 references/async-testing.md。
  3. Fixtures:如果共享初始化逻辑重要,指出 conftest.py 路径,或说明不存在;对于 yield fixture,在声称资源泄漏前先确认是否存在清理。
  4. patch / mocks:对任何 patch 或 mock 的批评,给出符号被使用的导入路径(调用点),或标记为 N/A;当 mocking 是审查核心时,打开 references/mocking.md。
  5. 发现项:每条发现都需包含文件路径与行号,或测试节点 id,而不是笼统复述规则。

审查清单

技能提供以下检查项:

  • 被测异步代码对应的测试函数应为 async def test_*;
  • 异步依赖应使用 AsyncMock,而非 Mock;
  • 所有异步 mock 和协程都应被 await;
  • 共享初始化逻辑应放在 conftest.py 中;
  • fixture 作用域应恰当(function、class、module、session);
  • yield fixture 应在 finally 块中正确清理;
  • 相似测试用例应使用 @pytest.mark.parametrize;
  • 多个测试函数之间不应重复测试逻辑;
  • mock 应正确追踪调用(assert_called_once_with);
  • patch() 应指向正确位置(使用处,而非定义处);
  • 不应 mock 本应被测试的内部实现;
  • 应保持测试隔离(测试之间无共享可变状态)。

何时加载参考文档

  • 审查异步测试函数 → async-testing.md
  • 审查 fixture 或 conftest.py → fixtures.md
  • 审查相似测试用例 → parametrize.md
  • 审查 mock 与 patch → mocking.md

审查问题

技能给出以下引导性问题:

  • 所有异步函数是否都用 async def test_* 测试?
  • fixture 作用域是否恰当,并带有适当清理?
  • 相似测试用例是否可以通过参数化来减少重复?
  • mock 是否正确追踪调用,并用在正确位置?

适用场景与限制

该技能主要面向 pytest 测试代码的评审环节,尤其适合涉及异步代码、fixture 共享初始化、参数化与 mocking 的项目。资料未提供具体的安装命令、运行环境依赖、支持的平台、收费方式或价格信息,这些内容暂未提供。