You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python打包:tests文件夹用途及与unittest、pyproject.toml的配合问题

Python项目打包与unittest相关问题解答

1. tests文件夹的核心用途

tests文件夹没有严格限定单一用途,它可以覆盖你提到的所有测试场景:

  • 开发阶段测试本地代码:直接在项目根目录运行测试,此时Python会把当前目录加入模块查找路径,测试代码能直接加载本地的模块(不管是src结构还是根目录下的模块),适合开发时快速验证代码修改,不用提前安装包。
  • 测试构建完成的包:把项目打包成wheel或源码包后,安装到干净的虚拟环境中,再运行tests里的测试,能验证打包过程中有没有遗漏文件、路径配置错误等问题,确保构建出的包本身是完整可用的。
  • 验证目标设备上的安装包:在目标设备安装好包之后,把tests文件夹(或提取其中的基础测试用例)拷贝过去运行,能确认包在目标环境中功能正常、依赖兼容,完成基础的验收测试。

2. pyproject.toml完全可以和unittest配合

pyproject.toml是Python项目的配置入口,和unittest没有冲突,甚至能帮你更规范地管理测试相关的流程,而且不需要大幅修改现有测试代码:

  • 无需额外配置也能运行:在开发阶段,直接在项目根目录执行python -m unittest discover tests就能自动发现并运行unittest用例,完全不用修改pyproject.toml。
  • 配置测试相关的项目属性:如果需要把tests包含在打包产物中(方便在目标设备上跑测试),可以在pyproject.toml里添加包数据配置:
[tool.setuptools.package-data]
"*" = ["tests/**/*.py"]
  • 自定义测试命令:如果想简化测试命令,可以在pyproject.toml里配置脚本入口,比如先写一个tests/runner.py:
import unittest

def main():
    loader = unittest.TestLoader()
    suite = loader.discover('tests')
    runner = unittest.TextTestRunner()
    runner.run(suite)

if __name__ == '__main__':
    main()

然后在pyproject.toml中添加:

[project.scripts]
run-tests = "tests.runner:main"

之后执行run-tests就能直接运行所有unittest用例。

  • 配合测试依赖管理:如果测试需要额外依赖(比如coverage),可以在pyproject.toml里声明:
[project.optional-dependencies]
test = ["coverage"]

安装时用pip install your-package[test]就能把测试依赖一起装好。

内容的提问来源于stack exchange,提问作者Simon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 19:05:22