按照这个文件结构,我的项目如下(简化):
Project/
|-- project/
|-- test/
|-- test_foo.py
|-- foo.py
使用最佳实践,我应该如何foo
从内部导入test_foo.py
?我知道相对进口,但PEP 8 不鼓励他们。
按照这个文件结构,我的项目如下(简化):
Project/
|-- project/
|-- test/
|-- test_foo.py
|-- foo.py
使用最佳实践,我应该如何foo
从内部导入test_foo.py
?我知道相对进口,但PEP 8 不鼓励他们。
在单元测试中,至少对于外部接口,更喜欢绝对导入。测试应该尽可能地看起来像客户端代码,并且当事情移动时,当__init__.py
没有正确地从模块重新导出等时,它们应该会中断。
在测试中,我总是使用from .. import foo
,因为它是最简单的,使包最容易重构,并且不会破坏,因为我总是将测试保存在tests/
子包中。
PEP8 前半部分讨论的相对导入是隐式相对导入:例如, from foo.py
: import test.test_foo
。这些很糟糕,而且从来没有理由使用它们。
否则,唯一的选择是from project import foo
。