Pythonパッケージとテストに関して問題があります。私はwxpythonを使用してアプリケーションを作成しており、GUIパーツ用に次の基本的なフォルダー/パッケージ構造を持っています。mainframe.pyウィンドウはlogpane.pyパネルに依存しています。これは、 mainframe.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部分については、単体テストに加えて(問題は発生しません)、ビューごとに小さな「テスト」/例を用意します。つまり、ログペインの場合、レイアウトに問題がないことなどをテストするためのビューを示すベアボーンアプリケーションを起動する小さな実行可能な例が必要です。私が始めた方法は、
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パッケージに到達できる唯一の方法は、メイン/起動されたモジュールがツリーのさらに上にある場合です。
では、これらのタイプのテストをどのように構成すればよいでしょうか。単体テストでは、 noseはmainappフォルダーごとに起動されるため、問題を処理する優れたnoseを使用します(したがって、すべてのパッケージ内参照が機能します)。しかし、これらのテストは小さなスタンドアロンプログラムのようなものです。mainappフォルダーをこれらのpythonファイルで乱雑にすることはできません(そのようなファイルはたくさんあります)。これを達成する他の方法はありますか?
どんな入力も貴重です。
ありがとう、リッカード