【问题标题】:Equal, but Test fails相等,但测试失败
【发布时间】:2014-03-12 14:26:58
【问题描述】:

我收到此错误:

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

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

错误信息看起来很奇怪,因为两边看起来一样。

【问题讨论】:

    标签: python django unit-testing


    【解决方案1】:

    将查询集与列表进行比较时,应考虑使用assertSequenceEqual

    或者,如果结果的顺序没有意义,您应该使用名称不佳的assertCountEqual(python 2 中的assertItemsEqual)。

    【讨论】:

      【解决方案2】:

      我自己找到了解决方案。

      一方面是字典,另一方面是 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()))
      

      【讨论】:

      • 亲爱的投票用户:请留下评论为什么您认为这个解决方案不好。
      • 在我的 iPhone 上阅读这篇文章时,我似乎不小心点击了错误的屏幕位置。不幸的是,它似乎不想让我取消投票。 :(
      猜你喜欢
      • 2022-01-27
      • 2017-12-28
      • 1970-01-01
      • 2021-05-27
      • 2019-09-06
      • 1970-01-01
      • 2017-11-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多