相同的dicts在测试用例中给出错误

时间:2016-01-02 21:10:15

标签: python django-rest-framework

DRF API response.data

respone.data = {'created': 1, 'status': 1}

和其他数据来自序列化程序。

MySerializer(user_obj, context={'request': self.request}).data
{'created': 1, 'status': 1}

self.assertEqual(d1,d2) gives difference. Apparently there is no difference but somehow both are not matching. 

转储并再次加载匹配。

self.assertEqual(json.loads(json.dumps(d1)), json.loads(json.dumps(d2)))

排序也匹配。

self.assertEqual(sorted(response.data), sorted(data_))

1 个答案:

答案 0 :(得分:0)

DRF的Serializer .data方法返回一个OrderedDict,它是dict的子类:

return OrderedDict([
            (field_name, field.get_value(self.initial_data))
             for field_name, field in self.fields.items()
             if (field.get_value(self.initial_data) is not empty) and
             not field.read_only
         ])

但是你创建了一个与OrderedDict不同的字典。