このファイル構造に従うと、私のプロジェクトは次のようになります(簡略化)。
Project/
|-- project/
|-- test/
|-- test_foo.py
|-- foo.py
foo
ベストプラクティスを使用して、内部からどのようにインポートする必要がありますtest_foo.py
か?私は相対的な輸入を知っていますが、PEP8はそれらを思いとどまらせます。
このファイル構造に従うと、私のプロジェクトは次のようになります(簡略化)。
Project/
|-- project/
|-- test/
|-- test_foo.py
|-- foo.py
foo
ベストプラクティスを使用して、内部からどのようにインポートする必要がありますtest_foo.py
か?私は相対的な輸入を知っていますが、PEP8はそれらを思いとどまらせます。
単体テストでは、少なくとも外部インターフェイスのテストでは、絶対インポートを優先します。テストは可能な限りクライアントコードに似ている必要があり、物事が移動したり、__init__.py
モジュールから適切に再エクスポートされなかったりすると、テストが中断する必要があります。
From tests, I always use from .. import foo
, because it's the simplest, makes the package easiest to refactor, and isn't going to break, because I always keep my tests in a tests/
sub-package.
The relative imports the first half of PEP8 discusses are implicit relative imports: for example, from foo.py
: import test.test_foo
. These are bad, and there's never a reason to use them.
Otherwise, the only option is from project import foo
.