用途:面向 Python 项目,产出高信号、低 flake、快速的 pytest 测试套件与 CI 配置,关注可量化的收益,如运行耗时、不稳定率与覆盖率质量。
主要能力:编写及重构测试;修复 flakiness;设计 fixture 与 marker;增加覆盖率;加速测试套件(收集与运行阶段);提供 CI 配置参考与脚本。
默认工作流:先给测试分类(单元:纯函数、无 I/O;集成:涉及数据库、文件系统、多进程;系统/端到端:外部服务或 UI,保持最少且严格门控);识别边界(时间/时钟、随机性、网络、文件系统、数据库、环境变量、全局状态);选择最轻的接缝(优先 fake/stub 而非深层 mock,优先依赖注入而非 patch 内部实现);保证确定性(控制时间、随机种子、临时目录,避免顺序依赖);优化前先度量(区分收集时间与运行时间,用 --durations 加单一基线量化);为 CI 加固(强制 marker 规范、严格配置、超时、并行隔离)。
常用命令:默认使用 python3;若项目使用 uv,优先 uv run python。最小复现:python3 -m pytest path/to/test_file.py -q;仅首次失败:python3 -m pytest -x --maxfail=1;查找慢测试:python3 -m pytest --durations=20 --durations-min=0.5;为 CI 生成 JUnit:python3 -m pytest --junitxml=reports/junit.xml;单机并行(xdist):python3 -m pytest -n auto --dist load。
优化要点:缩小收集范围(testpaths、norecursedirs,避免导入期引入重模块);修正 fixture 作用域(昂贵初始化上移作用域并保证隔离);消除 sleep 与重试(带超时轮询、mock 时间);安全并行(xdist,隔离 worker 资源如临时目录与数据库端口);CI 分片(按历史耗时拆分测试文件并保持均衡)。
随附资料与脚本:references/pytest_core.md(fixture、marker、参数化、严格模式、TOML 配置、subtests,pytest 9.x)、references/plugins.md(插件选择与用法模式)、references/performance.md(收集与运行性能剖析与加速)、references/ci_github_actions.md(分片、制品、缓存、并发);scripts/junit_slowest.py(从 JUnit XML 报告最慢的测试/文件)、scripts/junit_split.py(按 JUnit 耗时把测试文件拆成 N 个分片)、scripts/run_pytest_filelist.py(按文件列表运行 pytest)。
质量门禁:测试在干净环境中通过(不隐式依赖本地状态);无网络/时间依赖且未显式控制;并行安全或显式标记为串行;CI 在相关时产出机器可读制品(JUnit、覆盖率)。
限制:本资料未提供具体价格、平台支持范围与效果承诺;实际能力取决于项目环境与上述命令及配置。