ホームページ >バックエンド開発 >Python チュートリアル >パスの問題による pytest の「ImportError: No module names...」問題を解決する方法

パスの問題による pytest の「ImportError: No module names...」問題を解決する方法

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-16 12:33:121041ブラウズ

How to Solve

pytest に関する PATH の問題: 「ImportError: No module names...」

pytest を使用すると、パスの問題により ImportError 例外が発生することがよくあります。これは、オペレーティング システムやプロジェクト構造が異なる場合に特によく発生する可能性があります。この問題に対処し、考えられる解決策を検討してみましょう。

Conftest ソリューション (pytest < 7)

パスの問題に対処する効果的な方法の 1 つは、conftest.py ファイルを利用することです。 Pytest は、テスト収集中に conftest モジュールを検索して、カスタム フックとフィクスチャを収集します。空の conftest.py ファイルをプロジェクトのルート ディレクトリ (pytest を実行する場所) に配置すると、pytest は自動的に親ディレクトリを sys.path に追加し、アプリケーション モジュールをインポートできるようにします。

例:

次のようなプロジェクト構造の場合:

repo/
   |--app.py
   |--settings.py
   |--models.py
   |--tests/
          |--test_app.py

単に空の conftest.py ファイルをrepo/ directory.

Pythonpath 設定 (pytest >= 7)

pytest の最新バージョン (7 以降) の場合、より便利な解決策は pythonpath 設定を利用することです。これにより、pytest 設定を通じて sys.path を直接変更できるようになります。 pyproject.toml または pytest.ini ファイルに次の行を追加します:

[tool.pytest.ini_options]
pythonpath = ["."]

これは、カスタム コードや sys.path の操作を必要としない、よりクリーンなアプローチです。

その他考慮事項

プロジェクト構造: conftest.py ファイルの配置を調整するか、プロジェクト構造に基づいた pythonpath 構成。たとえば、一般的な src ベースのレイアウトでは、ルートではなく src ディレクトリに conftest.py を配置します。

src レイアウト: src を PYTHONPATH に追加するときは注意してください。インストールされたパッケージではなくリポジトリ コードをテストすることになるため、src レイアウトを使用する利点が損なわれる可能性があります。

以上がパスの問題による pytest の「ImportError: No module names...」問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。