質問

私は、Pythonパッケージとテストに関する問題を抱えています。私が使用してアプリケーションを書いているのWXのpython のとGUI部品のため、以下の基本的なフォルダ/パッケージ構造を持っています。 mainframe.py のウィンドウを容易に mainframe.py の絶対インポートを使用してインポートされた logpane.py のパネル、に依存性を有します

import guiapp.utilviews.logpane

フォルダ/パッケージレイアウトます:

mainapp
   - main.py
   guiapp
       - __init__.py
       utilviews
           - __init__.py
           - logpane.py
           - other stuff...
       mainview
           - __init__.py
           - mainframe.py
           - other stuff here...
       other views...

ただし、アプリケーションのGUI部品のために、私は、ユニットテストに加えて(それらは問題ない)に、各ビューの小さな「テスト」/例を有するたい。すなわち、logpaneのために、私はレイアウトがOKなどがあることをテストするビューを示す裸の骨のアプリケーションを出せます、小さな実行可能な例を持っているしたいのですが 私が始めた道は、私は

を持っていたということでした
if __name__ == "__main__":
    # create some small window and a wx app
    # instanciate the panel and launch the app
    pass

パネルの実際の実装ファイルに/それ自身を見ます。これはlogpaneのための驚異を働きました。私はちょうどビューを見ていると、それが一緒に開催されたことを確認するために、ファイルをスタンドアロンで実行することができます。

のlogpane.py のへの依存関係が解決できなかったので、

しかし、もちろん戦略は、のmainframe.py のために決裂しました。これ以来、現在のメインモジュールのあるのメイン/立ち上げたモジュールは、ツリーでさらにアップしている場合mainframe.pyとmainframe.pyがutilviewsパッケージを達することができる唯一の方法です。

それでは、どのように私は、テストのこれらのタイプを構築できますか?ユニットテストのために私は、の鼻のいいですと鼻がMAINAPPフォルダごとに起動されるので、問題の世話をする(すべてのintrapackage参照工事そう)を使用しています。しかし、これらのテストは、小さなスタンドアロンのプログラムのようなものです。私は、単にこれらのpythonファイル(多くのそのようなファイルが存在します)でMAINAPPフォルダを乱雑にすることはできません。私はこれを実現することができ、他の方法はありますか?

任意の入力は貴重なものです。

おかげで、 リカード

役に立ちましたか?

解決

あなたはPYTHONPATHを使用することができます。あなたのテストファイルを実行する前に、あなたのメインのプロジェクトディレクトリに設定します。あなたはそのディレクトリから実行することになるかのように、すべての輸入を解決することができるようになります。

$ find
.
./test
./test/test.py
./some
./some/__init__.py

$ cat some/__init__.py 
x = 10

$ cat test/test.py 
import some
print some.x

$ cd test
$ export PYTHONPATH=..
$ python test.py
10
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top