0

私はPythonにかなり慣れていません。現在、私は PyCharm を試していますが、テストを実行するときに説明できない奇妙な動作に遭遇しています。

私が現在取り組んでいるプロジェクトは、PythonPlayground というフォルダーにあります。このフォルダには、いくつかのサブディレクトリが含まれています。すべてのフォルダーには、init .py ファイルが含まれています。一部のフォルダーには、nostest テストが含まれています。

プロジェクト ディレクトリ内のコマンド ラインから、nosetest ランナーを使用してテストを実行する場合、すべてのローカル インポートの前に「PythonPlayground」を配置する必要があります。たとえば、「モデル」というモジュールを「ui」フォルダーにインポートする場合、次のようにインポートする必要があります。

from PythonPlayground.ui.model import *

しかし、Pycharm 内からテストを実行するときは、先頭の「PythonPlayground」を再度削除する必要があります。そうしないと、テストが機能しません。このような:

ui.modelインポートから *

私はモック フレームワークも試していますが、何らかの理由で、このフレームワークには常にモジュールの完全な名前 (「PythonPlayground」を含む) が必要です。コマンドラインからテストを実行するか、PyCharm 内からテストを実行するかは問題ではありません。

patch('PythonPlayground.ui.models.User') をモックとして使用:

誰かが私に動作の違いを説明できますか? そして、正しい行動は何ですか?

4

1 に答える 1

1

PyCharmには独自のインタープリターの「コピー」があり、プロジェクトのルートがPythonPlaygroundディレクトリの1レベル下に設定されているsysパスの独自のバージョンがあるために発生すると思います。また、プロジェクトの PyCharm でインタープリターの設定を見つけて、適切なトップレベルを設定できます。ps。私は同じ問題を抱えていますが、Eclipse + pydevで

于 2012-09-04T10:12:19.213 に答える