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

现在我有了一个python项目,我在它的许多文件夹中编写了我的单元测试代码,该树如下所示:

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:as
find_packages(exclude=[“*.test”、“*.test.*”、“test.*”)
感谢分享您的经验,如果在安装脚本中使用了
find_packages
,您能告诉我如何避免使用测试目录吗?@Reorx:as
find_packages(exclude=[“*.test]”、“*.test.*”、“*.test.*”、“test.*”、“test”])
如果我在每个子目录中放置测试,在打包时也可能忽略它们,把它们放在一起还有其他好处吗?那就是味道。我更喜欢将源代码和测试代码完全分开。这听起来很主观。是的,我会尝试你的建议,非常感谢~如果我在每个子目录中放置测试,在打包时也可能忽略它们,将它们放在一起还有其他好处吗?那就是味道。我更喜欢将源代码和测试代码完全分开。听起来很主观。是的,我会试试你的建议,非常感谢~