我想在Django rest框架中为我的项目编写单元测试,但是我无法将res.data与serializer.data进行比较 这是我的一个对象Brand的json:
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"url": "http://localhost:8000/shops/tags/1/",
"id": 1,
"name": "PS4",
"link": "https://www.playstation.com"
}
]
}
这是我的单元测试:
BRANDS_URL = reverse('brands-list')
def test_retrieve_brand_list(self):
"""Test retrieving a list of brands"""
Brand.objects.create(name='Bestbuy', link='https://bestbuy.ca')
Brand.objects.create(name='Amazon', link='https://amazon.ca')
res = self.client.get(BRANDS_URL)
brands = Brand.objects.all().order_by('-name')
context = {'request': RequestFactory().get('/')}
serializer = BrandsSerializer(brands, context=context, many=True)
self.assertEqual(res.status_code, status.HTTP_200_OK)
self.assertEqual(res.data, serializer.data)
我的序列化器:
class BrandsSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Brand
fields = ('url', 'id', 'name', 'link')
如何将count,next,previous和results添加到我的serializer.data中? 我怎样才能有一个serializer.data像res.data? 我有点迷茫,我找不到解决方法
答案 0 :(得分:0)
您需要根据需要(或DEFAULT_PAGINATION_CLASS
)或在视图((pagination_class
)上设置分页类。您没有看到分页内容,因为默认情况下未启用分页设置。
例如,要将基于页码的分页设置为每页默认20个项目(可以被page_size
(或自定义)查询参数覆盖),您可以添加全局设置:
REST_FRAMEWORK = {
...
...
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 20
}
您还可以定义自己的分页类。
答案 1 :(得分:0)
您可以尝试以下方法:
*self.assertEqual(res.data['results'], serializer.data)*
希望这会有所帮助。