로그인이 필요한 페이지를 테스트하는 방법과 관련하여 매우 혼란 스럽습니다. 나는 나의 응답에 200 대신에 302를 얻는다. 그리고 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 데코레이터로 바꾸고 같은 문제가 발생했습니다.
EDIT AGAIN : 확인하기 만하면 모든 로그인 검사를 꺼내서 모든 것이 작동했습니다 (예상 한대로) self.client가하지 못하는 것이 거의 긍정적입니다. 내가 로그인했는지 알 수 있습니다.
시도해 보 겠지만 test_login 기능이 작동하는 이유는 무엇입니까? – thumbtackthief
docs는 is_authenticated가 항상 True를 반환한다고 제안합니다. https://docs.djangoproject.com/en/dev/ref/contrib/auth/#django.contrib.auth.models.User.is_authenticated – dm03514
FREAKIN 'KIDDING ME?! 하루 종일 나는 그걸 보았고, 그렇게 간단했습니다. 고맙습니다! – thumbtackthief