用途:为 Python 项目提供基于 pytest 的实用单元测试模式,帮助编写可读、可扩展的测试套件。
主要能力:使用普通 assert 语句(pytest 会自动内省失败信息,无需 self.assert*);通过 @pytest.fixture 与 yield 实现可复用的 setup/teardown 依赖注入;使用 parametrize 覆盖边界情况而不重复代码;使用 @pytest.mark.slow、@pytest.mark.xfail、@pytest.mark.skipif 等标记;使用 tmp_path 进行文件系统安全测试;使用 monkeypatch 安全覆盖环境变量、函数或路径。
使用方式:安装命令为 uv pip install pytest;运行 pytest 或 pytest tests/test_example.py -q。可在 pyproject.toml 的 [tool.pytest.ini_options] 中统一测试发现与标记,例如设置 minversion、testpaths、python_files、markers 与 addopts(如 -ra、--strict-markers、--strict-config)。
适用场景:为新代码路径添加单元测试、带回归覆盖地重构、设计清晰的 fixture、用确定性模式处理不稳定测试。
限制:不适用于端到端浏览器测试(应使用 Playwright 或 Selenium),也不适用于非 Python 服务(应使用其原生框架)。常见问题包括测试未被收集(需确认文件名匹配 test_*.py 或 *_test.py)、未知标记警告(需注册标记或启用 --strict-markers)、不稳定测试(需去除随机性、修复时间依赖、避免共享全局状态)。