2012-02-09 18 views
3

私はunittestモジュールを使用して、Pydevを使ってパッケージの階層構造で作成されたPythonコードをテストします。 pydevで実際のソースコードと単体テストに別々のソースフォルダを使用しようとすると問題が発生します。pydevでunittestを使用してPythonでプロジェクト全体の階層をテストする

project 
    |----src 
    |  |----com 
    |  |  |----myself 
    |  |  |  |----MyApplication 
    |  |  |  |   |----SampleFileToTest.py => The application file that I want to test 
    |----test 
    |  |----com 
    |  |  |----myself 
    |  |  |  |----MyApplication 
    |  |  |  |   |----TestTheSampleFileToTest.py => My test case file 

私は階層を分離しようとしているので、テストファイル内のアプリケーションファイルを参照する際に問題が発生しています。 Junitの方法、つまり異なるソースフォルダを使用して同じパッケージ名を維持することは可能ですか?

+0

"アプリケーションファイルを参照している問題"とは何ですか?多分あなたのテストスクリプトの中の単純な 'sys.path.insert(0、 '/ path/to/project/src')'はあなたが必要とするものです。 – Gryphius

答えて

2

これはPython自体のデフォルト(つまり:PyDevはとは何の関係)によってサポートされていない - 私は、Javaの背景から来るので、あなたはここであなたのJavaの概念のいくつかを忘れる必要があるかもしれません:)

Pythonでは、__init__.pyのフォルダが見つかるたびに、そのパッケージは他のパスでは検索されなくなります。私はsetuptoolsがその仕事をするためのいくつかのハッカーを持っていると思いますが、Python 3がそれをサポートするかもしれないことを漠然と思い出しますが、これまで一般的には推奨されていないと思います... Pythonインタプリタセッションを開始して 'これをインポート'してください:)

Ie:つまり、my_app/__init__.pyが見つかると、 PYTHONPATH内の他の場所でmy_appサブフォルダを解決しようとします

したがって、2つのアプローチがあります。通常は、テストは_testsパッケージ内のモジュールの近くに配置します。すなわち:

/project 
/project/src 
/project/src/myapp 
/project/src/myapp/__init__.py 
/project/src/myapp_tests/__init__.py 
/project/src/myapp_tests/test_myapp.py 

/project 
/project/src 
/project/src/myapp 
/project/src/myapp/__init__.py 
/project/src/myapp/_tests 
/project/src/myapp/_tests/__init__.py 
/project/src/myapp/_tests/test_myapp.py 

そして、他のアプローチ(私は以下のコードから複数の別々のテスト「フィール」などの少し好きと言わなければならない)、テスト用に別のパッケージを持つだろう

関連する問題