pytestで ModuleNotFoundError: No module named 'hoge'が出る


状況

以下のようなディレクトリ構成図でテストを実行する.
test_A.py,test_B.pyではbase_test.pyで定義したclassをimportしたい.
しかし,ModuleNotFoundError: No module named 'hoge' が出てしまいimportに失敗する.

ディレクトリ構成

.
├── src
│   ├── main.py
├── tests
    ├── __init__.py
    ├── base_test.py   (hogeクラスがある)
    ├── test_A.py         (base_test.hogeをimportしたい)
    ├── test_B.py         (base_test.hogeをimportしたい)

test_A.py,test_B.pyにおけるimport部分の書き方(失敗例)

from base_test import TestBase

解決方法

import部分の書き方を変える.
test_A.py,test_B.pyにおけるimport部分の書き方(成功例)

from tests.base_test import TestBase

以下のdocumentで説明されていますが,pytestはそのディレクトリのrootをsys.pathに追加しているようです.
そのため,今回のディレクトリ構成ではtestsディレクトリを始点にしたpathを書く必要がありました.