mcpField
P
pytest

pytest

github.com/microsoft测试与质量2.5k65 次安装今天更新
代码仓库

关于 pytest

pytest skill 提供使用 pytest 编写和组织测试的建议,涵盖 fixture、参数化、断言、插件,以及保持测试隔离并关注可观察行为的做法。

主要功能

  1. 01按源码结构组织测试
  2. 02选择 fixture 作用域并共享 fixture
  3. 03使用带可读 ID 的参数化测试
  4. 04应用断言与异常测试模式
  5. 05选择常见 pytest 插件

适用场景

  1. 01组织 Python 项目中的测试
  2. 02用参数化用例测试多种输入
  3. 03设置可复用 fixture 与清理流程
  4. 04避免测试相互依赖及断言实现细节

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/microsoft/debugpy --skill pytest

安装后在 Claude Code 中输入/pytest确认已加载。

详细介绍

技能:pytest

使用 pytest 编写和组织测试的最佳实践,包括 fixtures、parametrize 和插件。

适用场景

在使用 pytest 编写和组织测试时应用此技能,包括 fixtures、parametrize、markers、插件和测试结构。

测试组织

  • 将测试放在 tests/ 目录中,并使目录结构与源代码一致。
  • 将测试文件命名为 test_<module>.py,将测试函数命名为 test_<behavior>()。
  • 仅在相关测试共享 fixtures 或设置时,才将它们归入类中。

Fixtures

  • 将 fixtures 定义在所需的最小作用域内(function > class > module > session)。
  • 使用 conftest.py 存放共享 fixtures,并将其放在合适的目录层级。
  • 优先使用工厂 fixtures,而不是复杂的 fixture 继承。
  • 使用 yield fixtures 进行设置和清理;优先使用 tmp_path,而不是 tempfile。

Parametrize

  • 对包含多个输入的数据驱动测试,使用 @pytest.mark.parametrize。
  • 提供测试 ID(ids=...),以便测试输出清晰易读。
  • 将 parametrize 与 fixtures 结合,用于笛卡尔积测试。

断言

  • 使用普通的 assert 语句——pytest 会对其进行重写,以提供清晰的失败消息。
  • 使用 pytest.raises(ExceptionType, match=...) 测试异常。
  • 使用 pytest.approx() 比较浮点数。

插件

  • 常用插件:pytest-cov、pytest-mock、pytest-asyncio、pytest-xdist、pytest-timeout。
  • 相较于直接使用 unittest.mock.patch,优先使用 pytest-mock 的 mocker fixture。

常见问题

  • 不要对可变状态使用作用域为 session 的 fixtures。
  • 不要断言实现细节——应测试可观察到的行为。
  • 避免测试之间相互依赖;每个测试都应能独立运行。

评论

支持 Markdown