SuperAPI AI 工具集

pytest

测试与质量

查看项目

更新于 10-16 06:47

技能介绍

用途:在编写和组织 pytest 测试时应用该技能,涉及 fixtures、parametrize、markers、插件与测试结构。

测试组织:测试放在 tests/ 目录,镜像源码结构;测试文件命名为 test_<module>.py,测试函数命名为 test_<behavior>();仅当共享 fixtures/setup 时才用类分组相关测试。

Fixtures:在所需最窄作用域定义(function > class > module > session);共享 fixtures 用 conftest.py,放在合适目录层级;优先用工厂 fixtures 而非复杂继承;用 yield fixtures 做 setup/teardown,优先 tmp_path 而非 tempfile。

Parametrize:用 @pytest.mark.parametrize 做多输入数据驱动测试;用 ids=... 提供可读测试 ID;可与 fixtures 组合做交叉乘积测试。

断言:用普通 assert,pytest 会重写以给出清晰失败信息;异常测试用 pytest.raises(ExceptionType, match=...);浮点比较用 pytest.approx()。

插件:常见插件有 pytest-cov、pytest-mock、pytest-asyncio、pytest-xdist、pytest-timeout;优先用 pytest-mock 的 mocker fixture 而非原始 unittest.mock.patch。

陷阱:不要用 session 作用域 fixtures 保存可变状态;不要断言实现细节,应测试可观察行为;避免测试相互依赖,每个测试应可独立运行。

限制:资料未提供安装命令、版本要求、具体配置示例或更多平台信息。