0

按照这个文件结构,我的项目如下(简化):

Project/
|-- project/
    |-- test/
        |-- test_foo.py
    |-- foo.py

使用最佳实践,我应该如何foo从内部导入test_foo.py?我知道相对进口,但PEP 8 不鼓励他们

4

2 回答 2

2

在单元测试中,至少对于外部接口,更喜欢绝对导入。测试应该尽可能地看起来像客户端代码,并且当事情移动时,当__init__.py没有正确地从模块重新导出等时,它们应该会中断。

于 2012-10-03T15:31:15.323 回答
0

在测试中,我总是使用from .. import foo,因为它是最简单的,使包最容易重构,并且不会破坏,因为我总是将测试保存在tests/子包中。

PEP8 前半部分讨论的相对导入是隐式相对导入:例如, from foo.py: import test.test_foo。这些糟糕,而且从来没有理由使用它们。

否则,唯一的选择是from project import foo

于 2012-10-03T15:18:52.437 回答