我收到此错误:
AssertionError: [{'a': 20220, 'b': 1623}] != [{'a': 20220, 'b': 1623}]
双方似乎相等,但assertEqual()失败。
错误消息看起来很奇怪,因为双方看起来都一样。
答案 0 :(得分:0)
将查询集与列表进行比较时,应考虑使用assertSequenceEqual
。
或者,如果结果的排序没有意义,那么你应该使用命名不佳的assertCountEqual
(python 2中的assertItemsEqual
)。
答案 1 :(得分:-1)
我自己找到了解决方案。
一方面是dict,另一方面是django ORM的结果:
self.assertEqual([{'a': a.id), 'b': int(b.id)}], Foo.objects.filter(b=b).values())
在django ORM的结果周围添加list()后,它可以工作:
self.assertEqual([{'a': a.id), 'b': int(b.id)}], list(Foo.objects.filter(b=b).values()))