用途:为 Python 服务提供基于 pytest 的测试编写与审查指导,当用户询问 Python 测试、fixture、mock 或测试组织时启用。技能先读取项目设置,检查 .chalk/docs/engineering/ 架构文档,确认 pytest 版本、异步框架(asyncio、trio)、HTTP 客户端(httpx、requests、aiohttp)、ORM(SQLAlchemy、Django ORM、Tortoise)及既有测试约定,并阅读 conftest.py 了解现有 fixture 组织;随后解析 $ARGUMENTS 确定具体模块、测试文件或关注点(fixture 设计、工厂模式、mock、异步测试、parametrize、测试组织)。
主要能力:审计 fixture 的作用域(function 默认最安全,class、module、session 更快但有共享状态风险)、conftest.py 分层组织、fixture 依赖是否构成清晰 DAG、是否优先使用 yield fixture 做 setup/teardown;审计工厂模式,识别内联重复构造测试数据、推荐 factory_boy 或自定义工厂函数、区分 factory.build() 与 factory.create();审计 mock 策略,避免过度 mock 被测对象或不足 mock 导致访问真实外部服务,注意 patch 应指向对象被使用的位置而非定义位置,HTTP mock 可用 respx、responses、aioresponses,并建议 spec=True;审计异步测试,检查 pytest-asyncio 的 mode="auto" 或显式 @pytest.mark.asyncio、异步测试函数是否遗漏 async、异步 fixture 是否使用 @pytest_asyncio.fixture、事件循环作用域是否匹配;审计 parametrize,消除仅输入输出不同的重复测试,补充空输入、None、边界值、unicode、超大输入等用例,并设置可读 id;评估测试金字塔中单元、集成、E2E 的平衡。
输出:以对话形式给出审计报告,包含 Fixture 组织、工厂模式、Mock 策略、异步测试(如适用)、Parametrize 机会、测试金字塔平衡、带代码示例的优先级建议。
限制与反模式:不要测试实现而非行为;避免会话级可变共享状态;不要 mock 所有依赖;复杂断言可加说明信息;关注测试性能,可用 pytest-xdist 并行;消除复制粘贴的测试函数。资料未提供具体安装命令、版本要求、收费信息或支持平台。