问题描述
假设我们有一个具有以下结构的目录:
10 + "b" + "a" + "b"
测试包 tests/
|-- __init__.py
|-- test_foo.py
的地方。在 foo
中,变量 test_foo.py
被定义(并修改)以备后用。
现在假设我们有大约 20 个 bar
而不是一个文件,其中 test_fooX.py
在每个测试中都被初始化。
在 bar
中启动 bar
并在每次测试中直接导入它是否是一种好习惯?例如
__init__.py
蟒蛇之禅提到:
显式优于隐式。
在每个脚本中定义 from __init__ import bar
将是显式的方式。但是,导入变量会改进测试/项目的结构。
一个真实的场景是一个记录器(从 bar
导入),它的日志记录级别需要改变;或特定目录的位置,而不是每次都定义它。
解决方法
__init__.py
没有什么真正隐含的内容。一个包就是一个模块。因为包由包含名为 __init__.py
的文件的目录实现,该文件包含模块 tests
的内容,其他文件实现属于同一包的子模块。