Djangoでは、私はビューを持っています。これは特定のユーザーのために登録ページにリダイレクトされます。このためのテストを書いてみたいと思います。Django testing:RequestFactory()リダイレクトに従います
標準のrequest.client.get
を使用してユーザーを指定することはできません(デフォルトではanonymous_user
?がデフォルトです)。動作をテストできません。
RequestFactory()
でrequest.user
と指定することができました。ただし、リダイレクトに従わず、テストが失敗します。
from .views import my_view
from django.test import RequestFactory()
def test_mytest(self):
user = create_guest_user()
self.factory = RequestFactory()
request = self.factory.get(reverse('my_view'), follow=True)
request.user = user
response = my_view(request)
self.assertContains(response, "page where redirected should contain this")
それは、このエラーメッセージで最後の行に失敗します。これを行う方法を
AssertionError: 302 != 200 : Couldn't retrieve content: Response code was 302 (expected 200)
任意のアイデア?
EDIT:これはRequestFactory()
を指しているので、これは複写ではありません。self.client.get
(follow=True
は問題を解決します)とは異なります。
の可能性のある重複した[ジャンゴ:ページが目的のURLにリダイレクトしている場合のテスト](https://stackoverflow.com/questions/14951356/django-testing-if-the-page-has-the-desired-url-desired-url) –
これは重複していません。その場合、フォーカスは 'SimpleTestCase'であり、ここでは' RequestFactory'クラスについて話しています。 'assertRedirect'以外のリダイレクトにも従います。 – surfer190
' RequestFactory() 'リクエストに従うことはできません。単に 'request'オブジェクトを生成します。 'RequestFactory'を使用する場合は、レスポンスコードを確認し、リダイレクト場所を取得し、その場所をビューに解決してから、そのビューを呼び出す必要があります。 'client'はあなたのためにそれをすべて世話するように設計されているので、代わりに使うべきです。 – Alasdair