1
對於如何測試需要登錄的頁面,我感到非常困惑。在我的回覆中,我一直得到302而不是200,並且在檢查pdb中的響應時,我肯定會重定向到登錄頁面。我使用登錄中間件而不是裝飾器,如果這是相關的。即使用戶已登錄,Django測試也會返回登錄重定向302
class SimplePageLoadsTestCase(TestCase):
def setUp(self):
self.client = Client()
self.user = User.objects.create_user('test_user')
self.client.login(username='test_user', password='test_user')
def test_login(self):
self.assertTrue(self.user.is_authenticated())
def test_index(self):
self.client.login(username='test_user', password='test_user')
response = self.client.get(reverse('index'))
self.assertEqual(response.status_code, 200)
test_login
測試通過。我不確定我是否需要每次測試重新登錄用戶(我認爲不是,因爲我不需要在test_login
,但我已經嘗試了兩種方式,結果相同。我扔了幾個打印在我看來聲明,他們不輸出,所以我知道我不打的看法都一樣,我懷疑。
我能提供的觀點或中間件如果他們有關。
編輯:我禁用了中間件,並用@login_required修飾器替換了它,並且出現了相同的問題。
再次編輯:我檢查了一下,我拿出了所有的登錄檢查,一切正常(正如我預期的那樣) m幾乎肯定了self.client沒有知道我已經登錄。
我會嘗試,但爲什麼test_login函數工作? – thumbtackthief
文檔建議is_authenticated始終返回True,https://docs.djangoproject.com/en/dev/ref/contrib/auth/#django.contrib.auth.models.User.is_authenticated – dm03514
您是否在瘋狂地開玩笑?我一整天都在那,而且那很簡單。謝謝! – thumbtackthief