私はログインビューを作成しており、ビューのユニットテストを追加したいと考えています。私の見解は次のようになります。Djangoユニットテストでセッションオブジェクトを使用する
def login(request):
if request.POST:
usrname = request.POST.get('username')
password = request.POST.get('password')
user = authenticate(username=usrname, password=password)
if user is not None:
auth_login(request, user)
return redirect('/core/home/')
else:
context = {'error_message': "Invalid username or password"}
return render(request, 'core/login.html', context)
else:
c = {}
c.update(csrf(request))
return render_to_response('core/login.html',c)
def home(request):
if request.user.is_authenticated():
context = {'user' : request.user}
return render(request, 'core/home.html', context)
else:
return render(request, 'core/login.html')
そして、私のユニットテストは、次のようになります。彼らはセッションオブジェクトを見つけることができないので、
class CoreViewTests(TestCase):
def setUp(self):
self.factory = RequestFactory()
def test_login_view_with_valid_user(self):
uf = UserFactory()
user = uf.make_user("ValidUser1", "12345", "[email protected]")
self.assertEqual(user.username, "ValidUser1")
request = self.factory.post('/core/login', {"username": "ValidUser1", "password": "12345"})
response = login(request)
self.assertEqual(response.status_code, 200)
ユニットテストのクラッシュ。ダミーセッション辞書を定義してウェブサイト上のカップルチュートリアルに従いますが、それは役に立ちません。
セッションオブジェクトを処理する必要があるビューのユニットテストを書く方法を教えてください。
ありがとうございました。
これはあなたの正確なコードですか? 'request = self.factory.post( '/ core/login'、{" username ":" ValidUser1 "、" password ":" 12345 ")'この行には閉じられていない辞書があります。 .com.post( '/ core/login'、{"username": "ValidUser1"、 "password": "12345"、}) ' –
はい、私はレポから自分のコードをコピーします。おそらく私はチェックイン時にタイプミスがありました。 –
あなたはまだコードを修正してエラーが出ますか? –