审查 pytest 测试代码中的异步模式、fixtures、parametrize 和 mock。适用于检查 test_*.py 文件中的异步测试函数、fixture 使用等。
Pytest Code Review QQ快速引用
功能概述
Pytest Code Review QQ快速引用是一项面向实际任务的技能,主要用于参考.async def testQQ, AsyncMock, 等待模式. 参考/async- testing.md.confest.py, 厂房固定装置, 范围, 清理;参考/固定. mdXXX。
核心要点
- 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
- 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
- 从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。
使用与执行
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;
结果检查与注意事项
涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
Pytest 代码审查指南
快速参考
| 问题类型 | 参考文档 |
|---|---|
| async def test_*、AsyncMock、await 模式 | references/async-testing.md |
| conftest.py、工厂型 fixture、作用域(scope)、清理逻辑 | references/fixtures.md |
| @pytest.mark.parametrize、DRY 模式 | references/parametrize.md |
| AsyncMock 调用追踪、patch 模式、何时应使用 mock | references/mocking.md |
审查关卡(Review gates)
请按顺序执行。在每一项适用的关卡通过之前,不得指出与 pytest 相关的具体问题。
- 限定文件范围 — 通过条件: 明确列出所有将被引用的
test_*.py文件及任意涉及的conftest.py;对列表之外的文件不提出任何问题。 - 异步 vs 同步 — 通过条件: 对每个限定范围内的文件,注明其是否使用
async def test_*或await;若存在,则在批评异步用法前,须先查阅references/async-testing.md。 - Fixture — 通过条件: 若共享初始化逻辑重要,请明确指出所涉
conftest.py的路径,或声明无相关文件;对于 yield 类型的 fixture,须确认其已包含finally块中的清理逻辑,方可认定存在资源泄漏。 - patch / mock — 通过条件: 针对任何关于
patch或 mock 的批评意见,必须提供该符号被调用处(call site)的完整导入路径;若 mock 是本次审查的核心内容,则需同步查阅references/mocking.md。 - 问题描述 — 通过条件: 每个问题均需包含具体文件路径与行号(或测试节点 ID),不可仅复述通用规则。
审查清单
- 测试函数针对被测异步代码应定义为
async def test_* - 异步依赖应使用 AsyncMock,而非 Mock
- 所有异步 mock 和协程均已被正确 await
- 共享初始化逻辑应提取至 conftest.py 中定义的 fixture
- 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 的作用域设置是否合理,且具备适当的清理机制?
- 结构相似的测试用例是否可通过 parametrize 实现去重?
- mock 是否能准确追踪调用,并应用于正确的位置?
热门AI工具
相关专题
Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。
0
2026.10.28
Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。
0
2026.10.28
Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。
0
2026.10.28
本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。
0
2026.10.22
本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。
0
2026.10.22
本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。
0
2026.10.22
本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。
0
2026.10.22
本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。
0
2026.10.22
本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。
0
2026.10.22
热门下载
相关下载
精品课程
共6课时 | 12.1万人学习
共79课时 | 161.6万人学习
共6课时 | 54.7万人学习
最新文章