
在python项目开发中,管理测试依赖曾是令人困惑的挑战。本文将详细阐述当前推荐的最佳实践:利用`pyproject.toml`文件中的`[project.optional-dependencies]`部分声明测试所需的额外依赖。这种方法不仅提供了一种清晰、标准化的依赖管理方式,还完美集成了`pip`和`tox`等工具,确保了本地开发与自动化测试环境的一致性与便捷性,从而遵循了现代python项目的规范。
Python生态系统在依赖管理方面一直以其灵活性而闻名,但也因此带来了诸多选择,例如dev-dependencies.txt、setup.py中的extras_require或tests_require、setup.cfg,乃至tox的自定义配置。这种多样性使得开发者难以找到一个明确的“最佳实践”,尤其对于习惯于Maven或Gradle等拥有强意见性依赖管理工具的开发者来说,更是如此。
然而,随着pyproject.toml的引入,Python项目正在逐步走向更加标准化和统一的配置管理。pyproject.toml不仅用于构建系统配置,也为项目元数据和依赖管理提供了现代化的解决方案。
当前,将测试依赖项声明为pyproject.toml文件中一个“额外依赖(extra)”被认为是最佳实践。这种方法清晰地将测试所需的包与项目核心运行时依赖区分开来,同时允许按需安装。
在pyproject.toml文件中,您可以通过[project.optional-dependencies]表来定义各种可选的依赖组。对于测试依赖,通常会创建一个名为test的额外依赖组。
立即学习“Python免费学习笔记(深入)”;
以下是一个示例配置:
[project]
name = "your_project_name"
version = "0.1.0"
description = "A short description of your project"
requires-python = ">=3.8"
dependencies = [
"requests", # 示例:项目的核心运行时依赖
"fastapi",
]
[project.optional-dependencies]
test = [
"pytest>=7.0", # 强大的Python测试框架
"pytest-cov>=4.0", # 用于pytest的代码覆盖率插件
"httpx>=0.23", # 如果需要测试HTTP客户端,这是一个很好的选择
"mypy>=0.900", # 类型检查工具
"ruff>=0.0.250", # 快速的Python代码格式化和linter
]
# 其他可选依赖,例如文档构建
# docs = [
# "sphinx",
# "sphinx-rtd-theme",
# ]解释:
一旦在pyproject.toml中声明了测试额外依赖,您就可以在本地开发环境中轻松安装它们。使用pip结合可编辑安装模式(pip install -e .)和额外依赖语法([test])即可实现:
pip install -e ".[test]"
命令解释:
执行此命令后,pytest、pytest-cov以及您在test组中定义的其他所有依赖项都将被安装到您的当前Python环境中(通常是虚拟环境),从而使您能够运行测试。
对于自动化测试和持续集成(CI/CD)流程,tox是一个强大的工具,它可以在不同的Python版本和依赖配置下运行测试。tox可以完美地与pyproject.toml中的额外依赖集成。
在tox.ini文件中,您可以配置测试环境(testenv)来自动安装test额外依赖:
# tox.ini
[tox]
min_version = 4.0
env_list = py38, py39, py310, py311
isolated_build = True
[testenv]
description = Run tests with pytest
package = skip
extras = test # 关键配置:告诉tox安装名为'test'的额外依赖
commands =
pytest --cov=your_project_name --cov-report=xml --cov-report=term-missing
mypy your_project_name
ruff check your_project_name
ruff format your_project_name --check配置解释:
通过这种方式,无论是在本地运行tox还是在CI/CD管道中,tox都能确保测试环境的一致性,自动安装所有必要的测试工具。
通过将测试依赖声明在pyproject.toml的[project.optional-dependencies]下的test额外依赖组中,Python项目能够实现一种清晰、标准化且易于管理的测试依赖策略。这种方法不仅简化了本地开发环境的设置,还与自动化测试工具如tox完美集成,是现代Python项目管理测试依赖的首选实践。采用这种方式,您的项目将拥有更强的可维护性、更清晰的结构,并更好地融入Python生态系统的最新发展趋势。
以上就是Python项目测试依赖声明:pyproject.toml与现代实践的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号