带有force_authenticate的APIRequestFactory:GET返回404

时间:2017-04-26 01:36:16

标签: python unit-testing get django-rest-framework

我正在使用Rest Framework for Django及其APIRequestFactory运行APITestCase。 当我用APIClient请求这个api时,我能够返回状态200,但是我得到了一个带有APIRequestFactory的404。我想将APIRequestFactory用于它的黑盒子"对APIClient的测试效果。

我在force_authenticate的REST Framework文档之后对我的测试进行了建模。它似乎与APIRequestFactory在this question中返回HTTPRequest而非请求的问题有关。

进口:

from rest_framework.test import APIClient, APITestCase, APIRequestFactory
from myapp.factories import UserFactory
from .views import internalPostListView

使用成功获得的APIClient进行测试(返回状态200):

class PostTests(APITestCase):

    @classmethod
    def setUpTestData(cls):
        cls.user = UserFactory()
        cls.client = APIClient()

    def test_successful_get_internal_post_list(self):
        self.user.is_superuser = True
        self.client.force_authenticate(user=self.user)
        response = self.client.get('/internal/posts/')

self.assertEquals(200, response.status_code)

使用无法找到api的APIRequestFactory进行测试(返回状态404):

class PostTests(APITestCase):

    @classmethod
    def setUpTestData(cls):
        cls.factory = APIRequestFactory()
        cls.user = UserFactory()

    def test_successful_get_internal_post_list(self):

        self.user.is_superuser = True
        view = internalPostListView #Note: internalPostListView = InternalPostListView.as_view()
        request = self.factory.get('/internal/posts/')
        force_authenticate(request, user = self.user)
        response = view(request)

    self.assertEquals(200, response.status_code)

它未能获取api,并且不是身份验证或权限问题。它似乎与我的文档相匹配 - 我错过了什么?

0 个答案:

没有答案