2009-09-02 8 views
9

私はユニットテストを私のDjangoプロジェクトに統合したいと思っています。私はDjangoが関数を使ってビューを実装する方法のために、ユニットテストが面倒であることを発見しました。ユニットテストのDjangoビューはどのようにして動作しますか?

たとえば、関数にURLがある場合、各関数はDjangoのビュー/ページです。

ユニットテストのDjangoビューはどのようにして動作しますか?

答えて

10

ビューのテストがどのように難しいかわかりません。

test clientを使用してください。

コードカバレッジは簡単です。 URLリクエストがコードパスにどのようにマッピングされ、適切なURLリクエストを行うかを考えます。

Requestオブジェクトを作成してResponseオブジェクトを調べることによって、ビュー機能を「手動で」呼び出すことはできますが、これは大変な作業です。

コードカバレッジに疑問がある場合は、それが良いことです。つまり、URLに簡単にマップできないコード(Webアプリケーションのすべてのユーザーが見ることができるコード)があることを意味します。URLにマップされていないコードがある場合は、おそらく、(a)deleteコードまたは(b)それを別のモジュールにリファクタリングする。

私たちはビュー機能の外にたくさんのモジュールを持っています。私たちのビュー関数はこれらのモジュールをインポートします。これらの「ビュー機能の外」モジュールを通常のユニットテストでテストします。


これは典型的な構造です。

+0

これは、私が持っている別の質問に答えることができます。 djangoプロジェクト/アプリケーション階層に他のモジュールを追加するときに、どのようにディレクトリ構造を管理しますか? –

+0

ありがとう!それは多くの助けになります。 –

+0

test_all.pyはどのように機能しますか?私はすべてを1つの大きなTestCase.TestSuiteに入れて実行したいと思っています。そのようにして、すべてのテストの統計(合格と失敗)は、最後に単一の出力に集約されます。私は余分なユニットテストを実行するためにDjangoの "manage.py test"をカスタマイズする必要があるのか​​、Djangoのユニットテストを組み込んだ自分のトップレベルのテストランナーを書くべきなのかを判断することはできません。 –

2

django.test.clientには、ビューの基本的なユニットテストに必要なものすべてが含まれている必要があります。私はまた完全なスタックをテストするためにtwillseleniumが本当に好きです。

0

tddspry - nosetestsとtwillでDjangoをテストするためのヘルパーのコレクションを試すことができます。ノーズにもカバレッジのかなりのレポートを生成するカバレッジプラグインがあります。

関連する問題