gpt4 book ai didi

python - 如果字典可以通过 `==` 进行比较,为什么需要 assertDictEqual ?

转载 作者:IT老高 更新时间:2023-10-28 21:33:17 27 4
gpt4 key购买 nike

老实说,我一直使用 assertDictEqual,因为有时当我不使用它时,我得到的信息是,equal dicts 是不一样的。

但是...我知道字典可以通过 == 运算符进行比较:

>>> {'a':1, 'b':2, 'c': [1,2]} == {'b':2, 'a':1, 'c': [1,2]}
True

我实际上可能需要 assertDictEqual 的地方?

最佳答案

基本上,它允许 unittest 为您提供有关为什么测试失败的更多信息("diagnostics",以使用“Growing Object-Oriented Software Guided by测试”由史蒂夫弗里曼和纳特普赖斯)。比较这两个测试:

import unittest


class DemoTest(unittest.TestCase):

D1 = {'a': 1, 'b': 2, 'c': [1, 2]}
D2 = {'a': 1, 'b': 2, 'c': [1]}

def test_not_so_useful(self):
self.assertTrue(self.D1 == self.D2)

def test_useful(self):
self.assertDictEqual(self.D1, self.D2)


if __name__ == "__main__":
unittest.main()

以及他们的输出:

======================================================================
FAIL: test_not_so_useful (__main__.DemoTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "path/to/file.py", line 10, in test_not_so_useful
self.assertTrue(self.D1 == self.D2)
AssertionError: False is not true

对比

======================================================================
FAIL: test_useful (__main__.DemoTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "path/to/file.py", line 13, in test_useful
self.assertDictEqual(self.D1, self.D2)
AssertionError: {'a': 1, 'b': 2, 'c': [1, 2]} != {'a': 1, 'b': 2, 'c': [1]}
- {'a': 1, 'b': 2, 'c': [1, 2]}
? ---

+ {'a': 1, 'b': 2, 'c': [1]}

在后者中,您可以确切地看到不同之处,您不必自己解决。请注意,您可以只使用标准的 assertEqual 而不是 assertDictEqual,结果相同;根据 the docs

...it’s usually not necessary to invoke these methods directly.

关于python - 如果字典可以通过 `==` 进行比较,为什么需要 assertDictEqual ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34414326/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com