モジュールのインポート エラーによる pytest の PATH の問題の解決
pytest を使用して階層ファイル構造を持つプロジェクトでテストを実行する場合、次のことが考えられます。アプリケーションのパスからモジュールをインポートするときに、「ImportError: No module names ...」エラーが発生します。この問題は、sys.path を変更して必要なモジュールへのパスを含める必要があるために発生します。
pytest の推奨アプローチ >= 7: pythonpath 設定
pytest バージョン 7 以降では、pythonpath 構成値を使用した簡素化されたソリューションが提供されます。これにより、回避策を必要とせずに、特定のパスを sys.path に追加できます。構成ファイル (pyproject.toml または pytest.ini) では、次のように含めるパスを指定できます。
[tool.pytest.ini_options] pythonpath = [ "." ]
[pytest] pythonpath = .
pytest の元の回答 < 7: conftest ソリューション
古いバージョン (7 未満) の pytest を使用している場合は、空の conftest.py ソリューションを使用できます。これには、プロジェクトのルート ディレクトリに空の conftest.py ファイルを作成することが含まれます。これにより、pytest が conftest.py ファイルの親ディレクトリを sys.path に自動的に追加し、インポートの問題が解決されます。
説明
Pytest は、実行中に conftest モジュールをスキャンします。カスタム フックとフィクスチャを収集するためのテスト コレクション。これらのモジュールからカスタム オブジェクトをインポートするために、pytest は conftest.py の親ディレクトリを sys.path に追加します。
代替解決策
状況に応じて、この問題に対する追加の解決策が存在します。プロジェクト構造:
結論
sys.path を調整するか、conftest.py ソリューションを使用することで、問題を解決できます。 「ImportError: No module names ...」エラーを解決し、pytest 環境でテストが正常に実行されることを確認します。
以上が階層プロジェクト構造で pytest を使用するときに発生する「ImportError: No Module Named...」エラーを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。