Python 为什么可以';我不能测试Django REST框架吗?

Python 为什么可以';我不能测试Django REST框架吗?,python,django,unit-testing,django-rest-framework,Python,Django,Unit Testing,Django Rest Framework,我试图用APITestCase测试Django REST Framework AuthToken,但我总是得到状态代码400和消息: b'{“非字段错误”:[“无法使用提供的凭据登录。”]} 奇怪的是,当我通过python manage.py shell键入完全相同的命令时,我得到了状态代码200和auth令牌 我错过了什么 这是我的密码: from rest_framework.test import APITestCase from rest_framework.authtoken.mode

我试图用APITestCase测试Django REST Framework AuthToken,但我总是得到状态代码400和消息:

b'{“非字段错误”:[“无法使用提供的凭据登录。”]}

奇怪的是,当我通过
python manage.py shell键入完全相同的命令时,我得到了状态代码200和auth令牌

我错过了什么

这是我的密码:

from rest_framework.test import APITestCase
from rest_framework.authtoken.models import Token
from rest_framework.test import APIClient

class TestAuthToken(APITestCase):
    def test_login_admin(self):
        client = APIClient()
        response = client.post('/api-token-auth/', {'username':'admin','password':'password123'})
        self.assertEqual(response.status_code, 200)
更新 忘记为测试数据库创建用户。。。以下是新代码:

from django.contrib.auth.models import User
from rest_framework.test import APITestCase
from rest_framework.authtoken.models import Token
from rest_framework.test import APIClient

class TestAuthToken(APITestCase):
    def setUp(self):
        self.admin = User.objects.create_user('admin', 'admin@test.com', 'password123')
        self.admin.save()
        self.admin.is_staff = True
        self.admin.save()

    def test_login_admin(self):
        client = APIClient()
        response = client.post('/api-token-auth/', {'username':'admin','password':'password123'})
        self.assertEqual(response.status_code, 200)

您以前是否在测试用例的设置中创建用户?
因为django在运行测试时会创建一个测试db,并且测试中的每个类都会为空(除非您表示希望在测试之间的db中保留数据),如果您的代码检查db以查看凭据是否正常,它将发现不存在任何具有该用户名和密码的用户。

我来这里是为了寻找一个答案,以强制您在使用令牌时验证不起作用。对于相同情况下的用户,您需要以此答案中指定的方式指定用户和令牌

这是令人尴尬的…:D非常感谢,现在可以用了:)