Python Django rest框架单元测试视图集混合
我需要对Django REST框架mixin进行单元测试。所以我做了一个如下的测试:Python Django rest框架单元测试视图集混合,python,django,unit-testing,django-rest-framework,Python,Django,Unit Testing,Django Rest Framework,我需要对Django REST框架mixin进行单元测试。所以我做了一个如下的测试: class TestMyMixin(APITestCase): class DummyView(MyMixin, viewsets.ModelViewSet): queryset = MyModel.objects.all() serializer_class = MyModelSerializer #some properties o
class TestMyMixin(APITestCase):
class DummyView(MyMixin,
viewsets.ModelViewSet):
queryset = MyModel.objects.all()
serializer_class = MyModelSerializer
#some properties omitted
def setUp(self):
self.view = self.DummyView.as_view(\
actions={'get':'list'})
def test_basic_query(self):
instance = MyModel.objects.create(\
**{'name':'alex'})
request = APIRequestFactory().get(\
'/fake-path?query=ale',
content_type='application/json')
response = self.view(request)
self.assertEqual(\
response.status_code,status.HTTP_200_OK)
json_dict = json.loads(\
response.content.decode('utf-8'))
self.assertEqual(json_dict['name'],instance.name)
但是,当我运行此测试时,我会得到:
raise ContentNotRenderedError('The response content must be 'django.template.response.ContentNotRenderedError: The response content must be rendered before it can be accessed.
django REST框架对单元测试视图集
,混合
和视图
,但我不知道我应该怎么做
官方文档页面建议使用真实的URL,但它更适合于验收测试,而不是单元测试。出现此问题的原因是视图的响应未呈现,因此呈现的
为False
,并引发contentnotrendererror
异常
您可以在源代码中看到这是为什么以及如何发生的
您可以通过在响应中手动调用.render()
来解决该问题:
response = self.view(request)
self.assertEqual(response.status_code, status.HTTP_200_OK)
# Render the response manually
response.render()
json_dict = json.loads(response.content.decode('utf-8'))
self.assertEqual(json_dict['name'],instance.name)
嘿@canufeel我在想,你觉得我的回答有用吗?