我试图在测试中声明一个语句引发了这个异常,但似乎无法导入所述异常。例如,这不起作用:
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': 'up20@fe.up.pt', 'password': 'testpassword'}
user = create_user('joao', 'testpassword', 'up20@fe.up.pt')
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': 'up20@fe.up.pt', 'password': 'tsubasaolivesr'}
response = self.client.post(url, data, format='json')
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
data = {'email': 'up20@fe.up.pt', 'password': 'tsubasaolivesr'}
self.assertRaises(models.DoesNotExist, self.client.post(url, data, format='json'))
测试失败抱怨异常django.auth.contrib.auth.models.DoesNotExist被调用,即使我明确声明它应该发生。
答案 0 :(得分:0)
您在错误的级别进行测试。使用客户端发布到视图永远不会引发Django异常;即使你的视图本身没有捕获到这个异常,它几乎可以肯定,它肯定会被Django错误中间件捕获,并作为500错误呈现给客户端。
因此,如果您真的没有抓住该异常,可以检查帖子的结果是否为状态500;否则,您需要检查您向用户显示的模型不存在的任何消息。