🐡
conftest.pyを小分けにする
conftest.pyを小分けにする
conftest.py
に定義するフィクスチャも増えてくると次のようにファイルを分割したくなる。
tests
|-- conftest.py
`-- fixtures
|-- module1.py
`-- module2.py
インポートによる問題
# conftest.py
from .fixtures.module1 import *
from .fixtures.module2 import *
こうすることで分けたモジュールから定義したフィクスチャを持ってこれるが、アスタリスクでインポートすると望んでいないものもインポートされてしまうので避けたい。
そもそもアスタリスクによるインポートはコード検証ツールに引っかかる可能性が高い。
pytest_pluginsによるロード
pytest_pluginsは元々はpytestのプラグイン作成で利用するフックなのだが、これによる解決もできる。
pytest_plugins = (
"tests.fixtures.module1",
"tests.fixtures.module2",
)
サブパッケージで分ける
公式ドキュメントにドストライクなconftest.py: sharing fixtures across multiple filesという箇所がある。
これは各サブパッケージにconftest.py
を配置すると、そのパッケージのテストが実行される際に利用されるという仕組みによるもの。
tests
|-- conftest.py
|-- module1
| |-- conftest.py
| `-- test_module1.py
`-- module2
|-- conftest.py
`-- test_module2.py
こういった構成の場合、module1.test_module1
を実行した時のconftestはtests.module1.conftest < tests.conftest
となる。
Discussion