我正在使用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,并且不是身份验证或权限问题。它似乎与我的文档相匹配 - 我错过了什么?