【发布时间】:2016-05-29 02:16:07
【问题描述】:
我需要对 Django REST 框架 mixin 进行单元测试。所以我去做一个看起来像这样的测试:
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 framework 似乎有一些不同的单元测试方法viewsets、mixins 和views。
但我不知道我应该做什么。
官方文档页面建议使用真实的 url,但它更适合验收测试而不是单元测试。
【问题讨论】:
-
嘿@canufeel 我想知道,你觉得我的回答有帮助吗?
标签: python django unit-testing django-rest-framework