相等,但测试失败

时间:2014-03-12 14:26:59

标签: python django unit-testing

我收到此错误:

AssertionError: [{'a': 20220, 'b': 1623}] != [{'a': 20220, 'b': 1623}]

双方似乎相等,但assertEqual()失败。

错误消息看起来很奇怪,因为双方看起来都一样。

2 个答案:

答案 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()))