【发布时间】:2014-03-12 14:26:58
【问题描述】:
我收到此错误:
AssertionError: [{'a': 20220, 'b': 1623}] != [{'a': 20220, 'b': 1623}]
双方似乎相等,但 assertEqual() 失败。
错误信息看起来很奇怪,因为两边看起来一样。
【问题讨论】:
标签: python django unit-testing
我收到此错误:
AssertionError: [{'a': 20220, 'b': 1623}] != [{'a': 20220, 'b': 1623}]
双方似乎相等,但 assertEqual() 失败。
错误信息看起来很奇怪,因为两边看起来一样。
【问题讨论】:
标签: python django unit-testing
将查询集与列表进行比较时,应考虑使用assertSequenceEqual。
或者,如果结果的顺序没有意义,您应该使用名称不佳的assertCountEqual(python 2 中的assertItemsEqual)。
【讨论】:
我自己找到了解决方案。
一方面是字典,另一方面是 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()))
【讨论】: