Python 将所有测试文件收集到一个文件夹中更好,还是让它们分发到任何地方?
现在我有了一个python项目,我在它的许多文件夹中编写了我的单元测试代码,该树如下所示:Python 将所有测试文件收集到一个文件夹中更好,还是让它们分发到任何地方?,python,unit-testing,testing,code-organization,Python,Unit Testing,Testing,Code Organization,现在我有了一个python项目,我在它的许多文件夹中编写了我的单元测试代码,该树如下所示: Project ├── module1 │ ├── submodule1 │ │ ├── base.py │ │ ├── model.py │ │ └── tests.py │ ├── conn.py │ ├── __init__.py │ └── tests.py ├── errors.py ├── __init__.py ├── router.py └── te
Project
├── module1
│ ├── submodule1
│ │ ├── base.py
│ │ ├── model.py
│ │ └── tests.py
│ ├── conn.py
│ ├── __init__.py
│ └── tests.py
├── errors.py
├── __init__.py
├── router.py
└── tests.py
您可以看到,在模块的根文件夹中,项目中有许多tests.py
文件。我使用nose来帮助我进行测试,当我想测试所有这些测试时,只需在上面的文件夹中运行nosetests项目
,一切都正常
然后我的问题来了:我见过一些像tornado这样的项目,他们把所有的测试文件放在一个文件夹中,这样管理它们就很清楚了(我想),这是一种比我现在做的更好的方法吗?如果是的,为什么?根据Python的原理,我做测试的方式有什么错误吗?我把测试放在一个
/test
文件夹下,与源代码分开。对于那些我不想发送测试代码的情况,它使打包更容易。我将测试放在一个与源代码分开的/test
文件夹下。对于那些我不想发布测试代码的情况,它使打包变得更容易。就个人而言,我更喜欢将测试文件存储到一个特定的子目录test
,但我喜欢将测试和代码保持在非常近的位置,因此我在项目中的每个地方都有test
子目录
Project
├── module1
│ ├── submodule1
│ │ ├── base.py
│ │ ├── model.py
│ │ └── test
│ │ └── submodule1_test.py
│ ├── conn.py
│ ├── __init__.py
│ └── test
│ └── module1_test.py
├── errors.py
├── __init__.py
├── router.py
└── test
└── errors_test.py
└── router_test.py
避免所有测试目录非常容易进行打包。我个人更喜欢将测试文件存储到特定的子目录
test
,但我喜欢将测试和代码放在非常近的位置,因此我在项目中的每个地方都有test
子目录
Project
├── module1
│ ├── submodule1
│ │ ├── base.py
│ │ ├── model.py
│ │ └── test
│ │ └── submodule1_test.py
│ ├── conn.py
│ ├── __init__.py
│ └── test
│ └── module1_test.py
├── errors.py
├── __init__.py
├── router.py
└── test
└── errors_test.py
└── router_test.py
使用避免所有测试目录制作打包非常容易。感谢分享您的经验,如果安装脚本中使用了
find_packages
,您能告诉我如何避免测试目录吗?@Reorx:asfind_packages(exclude=[“*.test”、“*.test.*”、“test.*”)
感谢分享您的经验,如果在安装脚本中使用了find_packages
,您能告诉我如何避免使用测试目录吗?@Reorx:asfind_packages(exclude=[“*.test]”、“*.test.*”、“*.test.*”、“test.*”、“test”])
如果我在每个子目录中放置测试,在打包时也可能忽略它们,把它们放在一起还有其他好处吗?那就是味道。我更喜欢将源代码和测试代码完全分开。这听起来很主观。是的,我会尝试你的建议,非常感谢~如果我在每个子目录中放置测试,在打包时也可能忽略它们,将它们放在一起还有其他好处吗?那就是味道。我更喜欢将源代码和测试代码完全分开。听起来很主观。是的,我会试试你的建议,非常感谢~