私はそのようにユニットテストを設定しました:
class UserViewTests(TestCase):
def setUp(self):
self.user_passwords = '123456'
self.user1 = User.objects.create(username='Bobby Johnson', password=self.user_passwords)
...
def test_view_user(self):
"""
Check that you can view a user's information correctly in their profile
"""
response = self.client.get(reverse('login'))
self.assertContains(response, "You're not logged in yet", status_code=200)
self.client.login(username=self.user1.username, password=self.user_passwords)
response = self.client.get(reverse('login'))
self.assertContains(response, "You've logged in already", status_code=200)
最後のアサーションのみが失敗し、その最後のアサーションで「すでにログインしています」を「まだログインしていません」に置き換えると、テストに合格するため、ログインに失敗したように見えます。これはdjango-social-auth
、OpenIdログインを許可するために使用しているためだと思います。
どうすればユニットテストでユーザーがログインしたと見なすことができますか?それuser.is_authenticated
は本当ですか?ユーザーがログインしているときとそうでないときでビューが正しく表示されることをテストしたいだけで、ログインが実際に機能するかどうかの単体テストについては特に気にしません。