1

私はいくつかの面白い初心者の問題を抱えています。

コマンドラインから単体テストを実行しようとしています:

H:\PRO\pyEstimator>python src\test\python\test_power_estimator.py
Traceback (most recent call last):
  File "src\test\python\test_power_estimator.py", line 2, in <module>
    import src.main.python.power_estimator as power
ImportError: No module named src.main.python.power_estimator

目的のフォルダーで実行しようとすると、これと同じことが起こります。

H:\PRO\pyEstimator\src\test\python>python test_power_estimator.py

私のフォルダ構造は次のようになります。

├───src
│   │   __init__.py
│   │   __init__.pyc
│   │
│   ├───main
│   │   │   __init__.py
│   │   │   __init__.pyc
│   │   │
│   │   └───python
│   │       │   __init__.py
│   │       │   power_estimator.py
│   │       │   __init__.pyc
│   │       │   power_estimator.pyc
│   │       │
│   │       └───GUI
│   │               __init__.py
│   │
│   └───test
│       │   __init__.py
│       │
│       └───python
│               test_power_estimator.py
│               __init__.py
│               covrunner.bat
│               .coverage
│
└───doc

多分私は明らかな何かを見ません。また、カバレッジを実行しようとします。このアプローチは良いですか(ファイル構造)?

4

1 に答える 1

1

あなたが直面している当面の問題は、Pythonの「ローカルコード」とは何か(公式の用語があるかどうかわからないので、これを作成しています)とそれをインポートする方法の誤解です。

を実行するpython src\test\python\test_power_estimator.pyと、の最初の要素は、現在のディレクトリではなく、スクリプトsys.pathを含むディレクトリに設定されます。test_power_estimator.pyしたがって、「import src.main.python.power_estimator as power」というステートメントsrcは、ディレクトリ内のパッケージを検索しますがsrc/test/python、失敗します。

この問題を回避する1つの方法は、PYTHONPATH環境変数を「H:\ PRO\pyEstimator」に設定することです。

ただし、テストを実行するための推奨される方法は、テストランナースクリプトを使用することです。nosetestの使用をお勧めします。

さらに、nosetestは、テストの実行中にカバレッジデータを収集するためのサポートを備えています。

その上、「src」という名前のpythonパッケージを用意するのは悪い考えのように思えます。パッケージの名前をプロジェクトに変更する必要があります。たぶん「推定量」または「推定量」(小文字にしてください)。

于 2009-11-14T11:54:57.817 に答える