2016-11-04 1 views
0

나는이 예외를 제기하는 성명이이 예외를 수입하는 것이 불가능한 것처럼 보인다고 주장한다. 시험은 django.auth.contrib.auth.models.DoesNotExist가 호출이 예외를 불평 실패어설 션하는 방법 django.contrib.auth.models.DoesNotExist 예외를 발생 시키는가?

from rest_framework.test import APITestCase 
from rest_framework.test import APIRequestFactory 
from CarPooling.views import login, logout 
from django.urls import reverse 
from django.contrib.auth.models import User, UserManager 
from django.contrib.auth import authenticate 
from rest_framework.authtoken.models import Token 
from CarPooling.models import AccountActivationToken 
from rest_framework import status 
from django.contrib.auth.models import DoesNotExist 

class LoginViewTests(APITestCase): 
    def test_login(self): 
     url = '/api/token/' 
     data = {'email': '[email protected]', 'password': 'testpassword'} 
     user = create_user('joao', 'testpassword', '[email protected]') 
     user = User.objects.get() 
     user.is_active = True 
     user.save()      
     response = self.client.post(url, data, format='json')  
     self.assertEqual(response.status_code, status.HTTP_200_OK) 
     self.assertEqual(response.data['token'], Token.objects.get(user=user).key) 
     data = {'email': '[email protected]', 'password': 'tsubasaolivesr'} 
     response = self.client.post(url, data, format='json')  
     self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) 
     data = {'email': '[email protected]', 'password': 'tsubasaolivesr'} 
     self.assertRaises(models.DoesNotExist, self.client.post(url, data, format='json')) 

, 내가 명시 적으로이 일어날 것으로 예상되는 주장하고있다하더라도이 예를 들어 작동하지 않습니다.

+0

'self.assertRaises (models.DoesNotExist'를'self.assertRaises (DoesNotExist,'? – BorrajaX

답변

0

잘못된 수준에서 테스트하고 있습니다. 뷰에 게시하기 위해 클라이언트를 사용하면 Django 예외가 발생하지 않습니다. 그 예외가보기 자체에서 잡히지 않더라도, 거의 확실하게 Django 오류 미들웨어에 의해 잡혀서 클라이언트에게 500 오류로 표시됩니다.

따라서 예외를 실제로 포착하지 못하면 게시물의 결과가 상태 500임을 확인할 수 있습니다. 그렇지 않으면 모델에 존재하지 않는 메시지를 사용자에게 보여 주어야합니다.

+0

)로 변경하면 어떻게됩니까? 서버에서 예외가 발생 했으므로 즉시 테스트가 실패합니다. 테스트를 받았을 때 500_BAD_REQUEST 응답을받을 것으로 예상되면 어쨌든 서버의 예외로 인해 테스트가 실패합니다. – DeusImoral

+1

아마도 테스트를 실행할 때받은 추적 표시를 표시해야합니다. –

관련 문제