2012-02-15 11 views
5

Pythonパッケージ/モジュール(実行ファイルなし)のコレクションを開発しています。テストのためにファイル階層を設定するための正しい/最良の方法は何ですか。Pythonのunittestingに適したファイル階層

シナリオ1:

AllPackages/ 
    package1/ 
     module1-1.py 
     module1-2.py 
    package2/ 
     module2-1.py 
     module2-2.py 
    tests/ 
     package1/ 
      test_module1-1.py 
      test_module1-2.py 
     package2/ 
      test_module2-1.py 
      test_module2-2.py 

はシナリオ2:

AllPackages/ 
    package1/ 
     module1-1.py 
     module1-2.py 
     tests/ 
      test_module1-1.py 
      test_module1-2.py 
    package2/ 
     module2-1.py 
     module2-2.py 
     tests/ 
      test_module2-1.py 
      test_module2-2.py 

私は単体テスト(私はずっと前にそれを行っている必要があります知っている)に新しいですので、私は」私は2つのシナリオを考えることができますこれらのアプローチのどちらが優れているか分からず、より多くの経験を持つ方々からアドバイスを探しています。

ありがとうございます!

答えて

1

第2のシナリオでは、プラグ可能なパッケージを使用できます。少なくともDjango framework(いくつかの権限について言及するために)で使用されています。プレーンunittestモジュールを使用している場合、それはdiscoverユーティリティを持っています。これはあなたのプロジェクトフォルダにどのようなテストをも見つけるので、2番目のアプローチもここに適合します。

+0

ありがとう、これは良い解決策のように見えます。私は、パッケージとモジュールを追加すると展開できるのが好きです。 – jlconlin

1

シナリオ1は、私の意見では良いです。たとえば、デプロイすると、作業が簡単になります。テストコードをデプロイしたくないので、パッケージ内のディレクトリtests/を省略するだけです。このアプローチははるかにクリーンです。

シナリオ2は乱雑です。このようにテストコードとプロダクションコードを混在させることの利点はありません。