讲师中心 微信公众号
AI工具推荐 视频效率加速

Python测试依赖管理:使用pyproject.toml的最佳实践

陌涛酱_8817

陌涛酱_8817

发布时间:2025-11-13 14:54:13

|

231人浏览过

|

来源于php中文网

原创

Python测试依赖管理:使用pyproject.toml的最佳实践

本文旨在解决python测试依赖管理中普遍存在的混乱局面,并提出一种基于`pyproject.toml`和`[project.optional-dependencies]`的现代最佳实践。通过将测试依赖声明为可选依赖项,并结合`pip`和`tox`等工具进行安装和管理,可以实现清晰、可维护且符合python最新生态标准的依赖管理流程,从而提升项目开发效率和一致性。

Python测试依赖管理概览

在Python项目开发中,管理测试所需的依赖项一直是一个挑战。与Java生态中Gradle或Maven等工具提供的高度规范化依赖管理方式不同,Python社区曾涌现出多种管理测试依赖的方法,例如通过dev-dependencies.txt文件、setup.py中的extras_require或tests_require、setup.cfg配置,甚至复杂的tox配置等。这种多样性虽然提供了灵活性,但也导致了缺乏统一标准和最佳实践的困境,使得开发者难以选择最“Pythonic”或最现代化的解决方案。

随着Python项目打包和依赖管理工具链的演进,pyproject.toml文件逐渐成为现代Python项目的核心配置标准。它提供了一个集中、声明式的配置方式,用于定义项目元数据、构建系统、依赖项等。在当前的最佳实践中,利用pyproject.toml来管理测试依赖被认为是实现清晰、可维护且符合最新生态标准的首选方法。

声明测试依赖的最佳实践:pyproject.toml

推荐的最佳实践是将测试依赖声明为pyproject.toml文件中的一个“可选依赖项”(optional-dependency)。这种方法不仅清晰地将测试依赖与核心项目依赖分离,也使得这些依赖可以按需安装,避免了不必要的包膨胀。

1. 配置 pyproject.toml

在pyproject.toml文件中,通过[project.optional-dependencies]部分来定义一个名为test的额外依赖组。这个组可以包含所有运行项目测试所需的库,例如pytest和pytest-cov等。

立即学习“Python免费学习笔记(深入)”;

# pyproject.toml 示例
[project]
name = "your_project_name"
version = "0.1.0"
description = "A short description of your project."
requires-python = ">=3.8"
dependencies = [
    # 核心项目依赖
    "requests>=2.28",
    "beautifulsoup4",
]

[project.optional-dependencies]
# 定义一个名为 'test' 的可选依赖组
test = [
    "pytest>=7.0",
    "pytest-cov>=4.0",
    "flake8>=6.0", # 例如,也可以包含代码质量工具
    # 其他测试工具...
]

解释:

Forge — Python Developer
Forge — Python Developer

Python开发助手 — 自动化脚本、API封装、命令行工具、数据管道、网页爬虫。经过测试的代码,包含错误处理和文档。当你需要...

下载
  • [project] 部分定义了项目的基本元数据和核心运行时依赖。
  • [project.optional-dependencies] 部分专门用于定义非核心、按需安装的依赖组。这里的 test 键名可以根据需要自定义,但 test 是一个约定俗成的名称。

2. 安装测试依赖

一旦在pyproject.toml中定义了测试依赖,就可以使用pip工具轻松地在开发环境中安装它们。

# 在当前项目目录中,以可编辑模式安装项目及其测试依赖
pip install -e ".[test]"

解释:

  • -e .:表示以“可编辑模式”安装当前目录下的项目。这意味着对项目源代码的任何更改都会立即反映在安装中,无需重新安装。这对于开发非常有用。
  • [test]:指定要安装的“额外”依赖组。pip会查找pyproject.toml中[project.optional-dependencies]下名为test的列表,并安装其中列出的所有依赖项。

3. 与 tox 集成

tox是一个自动化测试环境工具,它允许你在多个Python版本和依赖配置下运行测试,确保项目的兼容性。将pyproject.toml中的可选依赖与tox结合使用是现代Python项目测试的强大组合。

在tox.ini文件中,可以通过extras配置项指定在测试环境中安装哪个可选依赖组。

# tox.ini 示例
[tox]
min_version = 4.0
env_list = py38, py39, py310, py311

[testenv]
# 指定安装 pyproject.toml 中定义的 'test' 额外依赖组
extras = test
commands =
    pytest --cov=your_project_name --cov-report=term-missing
    flake8 your_project_name tests/

解释:

  • [testenv]:定义了所有测试环境的通用配置。
  • extras = test:告诉tox在创建每个测试环境时,除了安装项目本身外,还要安装pyproject.toml中test可选依赖组里指定的所有依赖。
  • commands:定义了在测试环境中执行的命令,例如运行pytest和flake8。

优势与注意事项

  1. 清晰分离: 将测试依赖与核心运行时依赖明确分开,提高了项目配置的可读性和可维护性。
  2. 按需安装: 只有在需要运行测试时才安装测试依赖,减少了生产环境或非开发环境的包体积。
  3. 符合标准: 采用pyproject.toml是Python社区的现代标准,确保项目与最新工具和生态系统良好集成。
  4. 工具友好: 这种声明方式与pip、tox、PyCharm等现代Python工具链无缝协作,提供一致的开发体验。
  5. PyCharm 集成: PyCharm等IDE通常能很好地识别pyproject.toml中的依赖声明。当你使用虚拟环境并按照pip install -e ".[test]"的方式安装后,PyCharm会自动识别这些依赖,并提供代码补全、类型检查等功能。

对于现有项目: 如果你的项目尚未迁移到pyproject.toml,或者使用的是较旧的setup.py或setup.cfg,建议逐步迁移。对于复杂的迁移,可以考虑使用像Hatch这样的现代项目管理工具,它能帮助你初始化和管理pyproject.toml项目,并简化依赖管理。

总结

通过采纳pyproject.toml中的[project.optional-dependencies]来声明测试依赖,Python项目能够实现一种高度结构化、可维护且符合现代最佳实践的依赖管理方案。这种方法不仅解决了过去测试依赖管理混乱的问题,也为开发者提供了一个明确、一致的路径,从而提升了开发效率和项目质量。遵循这一实践,你的Python项目将拥有一个健壮且易于管理的测试环境。

热门AI工具

更多
SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

相关专题

更多
pip安装使用方法
pip安装使用方法

安装步骤:1、确保Python已经正确安装在您的计算机上;2、下载“get-pip.py”脚本;3、按下Win + R键,然后输入cmd并按下Enter键来打开命令行窗口;4、在命令行窗口中,使用cd命令切换到“get-pip.py”所在的目录;5、执行安装命令;6、验证安装结果即可。大家可以访问本专题下的文章,了解pip安装使用方法的更多内容。

3050

2023.10.09

更新pip版本
更新pip版本

更新pip版本方法有使用pip自身更新、使用操作系统自带的包管理工具、使用python包管理工具、手动安装最新版本。想了解更多相关的内容,请阅读专题下面的文章。

6963

2024.12.20

pip设置清华源
pip设置清华源

设置方法:1、打开终端或命令提示符窗口;2、运行“touch ~/.pip/pip.conf”命令创建一个名为pip的配置文件;3、打开pip.conf文件,然后添加“[global];index-url = https://pypi.tuna.tsinghua.edu.cn/simple”内容,这将把pip的镜像源设置为清华大学的镜像源;4、保存并关闭文件即可。

8582

2024.12.23

python升级pip
python升级pip

本专题整合了python升级pip相关教程,阅读下面的文章了解更多详细内容。

4367

2025.07.23

Java Maven专题
Java Maven专题

本专题聚焦 Java 主流构建工具 Maven 的学习与应用,系统讲解项目结构、依赖管理、插件使用、生命周期与多模块项目配置。通过企业管理系统、Web 应用与微服务项目实战,帮助学员全面掌握 Maven 在 Java 项目构建与团队协作中的核心技能。

3820

2025.09.15

Java Maven/Gradle 构建与依赖管理合集
Java Maven/Gradle 构建与依赖管理合集

系统讲解 Java 项目构建工具的使用与进阶配置,涵盖 Maven 的 POM 文件结构、生命周期(clean/compile/package/install/deploy)与插件机制、依赖范围(compile/provided/test/runtime)与传递依赖管理、多模块聚合与继承、私有 Nexus 仓库发布,以及 Gradle 的 Groovy / Kotlin DSL 语法、Task 自定义与增量构建、依赖版本目录(Versi

369

2026.05.09

pycharm怎么改成中文
pycharm怎么改成中文

PyCharm是一种Python IDE(Integrated Development Environment,集成开发环境),带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测试、版本控制。此外,该IDE提供了一些高级功能,以用于支持Django框架下的专业Web开发。php中文网给大家带来了pycharm相关的教程以及文章,欢迎大家前来学习和阅读。

2949

2023.07.25

pycharm安装教程
pycharm安装教程

PyCharm是一款由JetBrains开发的Python集成开发环境(IDE),它提供了许多方便的功能和工具。本专题为大家带来pycharm安装教程,帮助大家解决问题。

5577

2023.08.21

Playwright 测试失败怎么办
Playwright 测试失败怎么办

Playwright测试失败专题汇集超时、定位器匹配、浏览器提前关闭、依赖与插件配置、文件上传、SSL及Docker启动等故障文章,并介绍通过截图、报告和Trace定位错误。

0

2026.10.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Uvicorn官方安装与入门手册
Uvicorn官方安装与入门手册

共0课时 | 0人学习

Python uv官方项目管理指南
Python uv官方项目管理指南

共0课时 | 0人学习

Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn