0

ユニットテストを生成するための公式ドキュメントを読みましたが、面倒です。、およびのステータスを変更するAdminPasswordChangeForm2つの定義済み関数の単体テストケースを生成する必要があります。views.pyis_staffis_active

また、ユーザーを登録するための簡単なテストケースも作成しました。フォローはで定義された方法ですviews.py(これはを使用してパスワードを更新していますAdminPasswordChangeForm

def user_change_password(request, id):
     user = User.objects.get(pk=id)
     form = AdminPasswordChangeForm(user, request.POST)
     if form.is_valid():
         new_user = form.save()
         msg = _('Password changed successfully.')
         request.user.message_set.create(message=msg)
         return HttpResponseRedirect('../../user/users')
     else:
         form = AdminPasswordChangeForm(user)
     extra_context = {            
         'form': form,
         'change': True
         }
     return direct_to_template(request,"users/user_password_change.html",
                 extra_context = extra_context)
4

1 に答える 1

1

テストの書き方に関するチュートリアルがたくさんあります。Django のドキュメント (いつものように) は、テストに関してフレームワークが提供するものを説明する素晴らしい仕事をしています。 https://docs.djangoproject.com/en/dev/topics/testing/?from=olddocs さらに、何をテストするかをカバーする多くの記事/スライドショーがあります。 http://toastdriven.com/blog/2011/apr/10/guide-to-testing-in-django/

ビューをテストする方法に関しては、いくつかのオプションがあります

組み込みのリクエスト ファクトリを使用して、リクエスト オブジェクトを生成し、関数を直接呼び出すことができます。必要に応じてリダイレクトが返されるか、テンプレートまたは期待どおりのものであることを確認できます。

または、urls.py ファイル内の URL にリクエストを送信できます。

AdminPasswordChangeFormユーザー オブジェクトと POST ディクショナリを使用してインスタンス化をテストするつもりです。正しいフォームが作成されていることを確認してください。あまりカスタマイズしていない場合は、django がコードのテストに優れているため、テストをスキップできます。

于 2012-05-15T12:41:47.437 に答える