我在單元單元測試中遇到了使用我的Django Rest Framework API進行身份驗證的問題。系統通過瀏覽器訪問時按預期工作。Django APIClient登錄不起作用
class UserDetail(RetrieveModelMixin, DestroyModelMixin, UpdateModelMixin, GenericViewSet):
authentication_classes = (BasicAuthentication, TokenAuthentication)
permission_classes = IsAuthenticated,
queryset = CustomUser.objects.all()
serializer_class = UserSerializer
試驗下面如下:在下面的端點發送PUT請求發送到下面的類時,我然而收到一個401的HTTP狀態
class AccountTests(APITestCase):
def setUp(self):
self.user = CustomUser.objects.create_user(email="[email protected]", password="password1", is_staff=True)
self.user.save()
self.user = CustomUser.objects.get(email="[email protected]")
self.client = APIClient()
def test_add_name(self):
self.client.login(email="[email protected]", password='password1')
url = reverse('customuser-detail', args=(self.user.id,))
data = {'first_name': 'test', 'last_name': 'user'}
self.client.login(email="[email protected]", password='password1')
response = self.client.put(url, data, format='json')
self.assertEqual(response.status_code, status.HTTP_200_OK)
當打印response.data,我收到:
{u'detail': u'Authentication credentials were not provided.'}
client.login(...)方法返回true,但憑據不會附加到標頭。我在IsAuthenticated權限類中的實驗有一個request.user = AnonymousUser。在BasicAuthentication類中,auth = None。
我錯過了關於在settings.py中使用BasicAuth的東西嗎?甚至在測試本身?
謝謝。
你解決問題? – Ajax