パッケージ内のpython内の参照およびGUIテスト
-
22-09-2019 - |
質問
私は、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