【问题标题】:assertEqual getting failed while values are sameassertEqual 在值相同时失败
【发布时间】:2021-07-21 16:29:10
【问题描述】:

我有下面的测试用例断言代码

self.assertEqual(
            response.data['results'],
            [
                ('id', self.bookmark.id),
                ('title', self.bookmark.title),
                ('color', self.bookmark.color),
                ('user', self.bookmark.user.id),
                ('project', self.bookmark.project.id),
            ]
        )

response.data['result'] 是:

[OrderedDict([('id', 7), ('title', 'bookmark'), ('color', 'yellow'), ('user', 2), ('project', 1)])]

比较列表值为:

[('id', 7), ('title', 'bookmark'), ('color', 'yellow'), ('user', 2), ('project', 1)]

失败消息:

AssertionError: [OrderedDict([('id', 7), ('title', 'bookma[52 chars]1)])] != [('id', 7), ('title', 'bookmark'), ('color[37 chars], 1)]

有人可以帮忙吗?

【问题讨论】:

标签: python django testing


【解决方案1】:

response.data['results'] 是 OrderedDict。 OrderedDict 存储项目首次添加时的顺序。这个 OrderedDict 的等价物是

dict([('id', 7), ('title', 'bookmark'), ('color', 'yellow'), ('user', 2), ('project', 1)])

[OrderedDict([('id', 7), ('title', 'bookmark'), ('color', 'yellow'), ('user', 2), ('project', 1)])

所以你那里的列表实际上并不是 OrderedDict 的等价物

【讨论】:

    【解决方案2】:

    这些值不一样。第一个是包含单个项目的列表(OrderedDict):

    [OrderedDict([('id', 7), ('title', 'bookmark'), ('color', 'yellow'), ('user', 2), ('project', 1)])]
    

    第二个是元组列表:

    [('id', 7), ('title', 'bookmark'), ('color', 'yellow'), ('user', 2), ('project', 1)]
    

    AssertEqual 失败,因为它们不相等。你想要:

    self.assertEqual(
                response.data['results'],
                [OrderedDict([
                    ('id', self.bookmark.id),
                    ('title', self.bookmark.title),
                    ('color', self.bookmark.color),
                    ('user', self.bookmark.user.id),
                    ('project', self.bookmark.project.id),
                ])]
            )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-03
      • 1970-01-01
      • 1970-01-01
      • 2014-06-18
      • 1970-01-01
      • 1970-01-01
      • 2018-04-18
      • 1970-01-01
      相关资源
      最近更新 更多