0

Djangoプロファイルアプリでビューのテストをいくつか書きたいです。

ビューには、いくつかのスマートなエラー処理ロジックがあります。たとえば、プロファイルを作成しようとしたが、プロファイルがすでに存在する場合は、既存のプロファイルページ(またはプロファイルの編集ページ)にリダイレクトするだけです。

このエラー処理が希望どおりに機能することをテストするにはどうすればよいですか?ベストプラクティスは何ですか?

1つのアイデアは、Zombie.jsを使用してBDDを実行し、タイトルが「プロファイルの作成」ではないページが表示されることをテストすることです(または、タイトルが「プロファイルの編集」であるページが表示されることを確認することもできます)。しかし、Djangoのテストドキュメントには次のように書かれています。

  • Djangoのテストクライアントを使用して、正しいビューが呼び出されていること、およびビューが正しいコンテキストデータを収集していることを確認します。
  • TwillやSeleniumなどのブラウザ内フレームワークを使用して、レンダリングされたHTMLとWebページの動作(JavaScript機能)をテストします。

ただし、Djangoテストクライアントを使用する場合は、次のことができます。

  • URLでGETおよびPOSTリクエストをシミュレートし、応答を観察します。低レベルのHTTP(結果ヘッダーとステータスコード)からページコンテンツまですべてです。
  • 指定されたURLに対して正しいビューが実行されることをテストします。
  • 特定の値を含むテンプレートコンテキストを使用して、特定のリクエストが特定のDjangoテンプレートによってレンダリングされることをテストします。

テストクライアントを使用してから、ページのコンテンツを確認する必要がありますか?どのテンプレートがレンダリングされたかを確認する必要がありますか?このビューをテストする適切な方法は何ですか?

4

1 に答える 1

1

リダイレクトとプロファイルの作成は非常にdjangoであるため、他のフレームワークを使用してJS機能をテストすることもできますが、このインスタンスにはdjangoテストクライアントを使用します。

テストをどこまで進めるかは、ケースバイケースで決定する必要があります。時間は限られており、一部の側面は他の側面よりも破損しやすいです。たとえば、テンプレートの解決については心配しません。200のステータスコードとコンテンツの簡単なチェックで十分です。

とにかく、私はビューが持っているさまざまな状態を特定することから始めます(私はここで推測しています):

  • 自分自身をレンダリングします(コンテンツ、テンプレート、ステータスコードなどを確認してください)
  • プロファイルフォーム検証エラー
  • プロファイルフォームの成功:プロファイルの作成:成功のリダイレクト
  • スマートエラー処理/リダイレクト。

このエラー処理が希望どおりに機能することをテストするにはどうすればよいですか?

# create object with specific ID.
# post form data that should trigger your special redirect. 
# ensure the redirect takes you to the model you just created via reverse
response = client.post(reverse('form_url'), {'valid_form_data': ''}, follow=True)
assertRedirects(response, reverse('view_url', args=[id]), target_status_code=200)

これにより、このアクションをトリガーする必要があると判断したデータを指定して、正しいプロファイルがリダイレクトされていることが確認されます。

于 2011-10-30T22:32:03.037 に答える