2011-12-01 170 views
22

私は、さまざまなテストフレームワーク(unittest、note、pyunit、...)の使い方を簡単にするpythonテストファイルの最適な命名規則を探しています。これらのツールのテスト自動検出にも親しみがあります。Pythonのテストファイルに最適な命名規則は何ですか?

ツールの設定を最小限にする必要のある明確なリコメンデーションが必要です。

  • テストディレクトリ名? testまたはtests
  • どこにテストを入れるのですか? in module/testdirまたはmodule /../ testdir
  • ファイル名をアンダースコアまたはダッシュでテストしますか? test_0.pyか私が知っている

test-0.pyは、私は:)

+3

;「テストを置く」という質問について

は、personnaly、私は、誰かがコードを編集する際のテストに触れる/実行するのを忘れないようにしてくださいするために各パッケージ内のサブディレクトリでテストを保存することを好みます" - "は、ファイル名をモジュール名にマップする規則に違反するため、Pythonで問題を引き起こします。 Pythonファイル名の一部として有効なPython識別子以外を使用しないでください。 –

答えて

12

がディレクトリtestを呼び出さないでくださいか、それは内蔵のtestパッケージと競合しますあまりにも多くの時間を持っています。

命名規則はPEP 8で定義されています。 「命名規則」を参照してください。下線はハイフンよりも優れています!

パッケージのレイアウトは少し柔軟です。私は次のようにする傾向があります。

package 
|-- package 
| |-- __init__.py 
| `-- <etc> 
|-- tests 
| `-- <etc> 
|-- setup.py 
|-- README 
|-- LICENCE 
`-- <etc> 

これはテストをパッケージ自体から分離しています。 setup.pyを使ってパッケージをインストールすると、ソースだけをインストールすることができます。これにより、人の通訳者はきちんと整理されます。テストは、パッケージソースを入手したときにそれらを必要とする開発者のためのものです。

Pythonパッケージの詳細についてはThe Hitch Hiker's Guide to Packagingをご覧ください。

+2

ありがとう! 1つのサブ質問のみ:いくつかのサブモジュールがある場合、すべてのテストを同じディレクトリにまとめる必要がありますか?あるいは '/ tests/a /'のようなサブディレクトリに移動するだけですか? – bogdan

+1

あなたは正直にどちらかに行くことができます。 Djangoは私が言及したアプローチを使用しています、そして、私は多くが少なくともそれらを1か所に置くと思います。しかし、Djangoのアプリケーションはテスト全体に広がっていますが、私は確かに多くの人がこのようにしています。私は全体に散在している場所(ソース内外にある)を1か所でテストする傾向にありますが、あなたにどちらかの方法を与える強い引数は考えられません:) – adamnfish

+3

テストを別のディレクトリに保存する引数は、美学に完全に依存している。私は@adamnfishにコードをミラーリングするディレクトリ構造に別々に置くことについて同意します - 人間が特定のテストを見つけるのがより簡単です(私は開発中常にそうします)。しかし、プロジェクト構造の変更(モジュールやファイルの追加と削除)が起こり易い場合は、テストの更新が間に合わないかもしれませんが、失敗が表示されるので、わかります! –

関連する問題