将变量从 __init__ 导入单元测试脚本是否正确?

问题描述

假设我们有一个具有以下结构的目录:

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 的内容,其他文件实现属于同一包的子模块。