《AI Agent 开发入门》16.1 确定性测试
本节使用标准库 unittest,不要求 pytest。测试应验证工具顺序、模型实际收到的消息、受控停止和错误回灌,而不是只检查最终一句话。四个 BookTests 是教学入门用例;完整项目另有基础和扩展回归,覆盖并行、预算、恢复、批准、幂等与日志。测试通过只针对这些路径,不承诺不误报或没有其他缺陷。
tag
本节使用标准库 unittest,不要求 pytest。测试应验证工具顺序、模型实际收到的消息、受控停止和错误回灌,而不是只检查最终一句话。四个 BookTests 是教学入门用例;完整项目另有基础和扩展回归,覆盖并行、预算、恢复、批准、幂等与日志。测试通过只针对这些路径,不承诺不误报或没有其他缺陷。
GitHub Actions Python CI 实战:基于 Poetry 的依赖管理、pytest 测试自动化(覆盖率/coverage)、Black 代码格式化、Flake8 静态检查、mypy 类型检查、多版本 Python 矩阵测试(3.9/3.10/3.11/3.12)、缓存策略加速、安全扫描(bandit/safety)、发布到 PyPI 自动化
深入讲解测试套件并行执行与 Flaky Test(不稳定测试)治理:测试变慢的瓶颈分析、进程级/线程级并行模型(pytest-xdist/JUnit/Go t.Parallel)、测试隔离与共享资源污染、Flaky 根因分类与检测追踪(复跑/Quarantine/Flaky 标记)、修复策略、CI 分片与缓存,以及团队防 Flaky 的制度与流程。
系统对比三大主流单元测试框架 pytest、JUnit 5、Go testing 的深度特性,涵盖 FIRST 原则、AAA 模式、Mock 策略、Table-Driven Tests、Benchmark,以及单元测试粒度、可测性设计和常见反模式。
把 pytest 从「能跑」推到「可维护」:conftest.py 向上合并与就近覆盖、fixture 作用域与依赖注入、工厂型 fixture 避免共享可变状态,再把约定写进 pyproject.toml,最后用一个本地 conftest 插件和实测插件清单收尾。
把测试从单条函数升级为可复用、可组合的工程:讲清 fixture 的参数注入与四种作用域、yield 拆解、conftest.py 层级发现、tmp_path 与 monkeypatch,再用 parametrize 和 unittest.mock 演示 patch 该打在哪一层、autospec 与 call_args 怎么用。
从 unittest 的写法对比切入 pytest:讲清 test_ 前缀的自动发现规则、assert 断言重写为何能给出逐元素 diff、pytest.raises 与 match、pytest.approx 浮点比较、skip/skipif/xfail 三种标记,以及 src 布局、pyproject 配置与 -v/-k/-x/--lf 常用开关。
Python 测试金字塔完整实践:pytest 核心(fixture/parametrize/monkeypatch)、unittest.mock/patch、Monkeypatch、覆盖率 pytest-cov、类型测试、CI 集成策略与 doctest。覆盖从单元测试到集成测试的完整工程方案。