老实说,我一直使用assertDictEqual,因为有时候我不使用它,就会得到信息,即相等的词是不一样的。

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

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

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

最佳答案

基本上,它允许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):
        assert self.D1 == self.D2

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

及其输出:
Failure
Traceback (most recent call last):
  File "...x.py", line 86, in test_not_so_useful
    assert self.D1 == self.D2
AssertionError


Failure
Traceback (most recent call last):
  File "...x.py", line 80, in test_useful
    self.assertDictEqual(self.D1, self.D2)
AssertionError: {'a': 1, 'c': [1, 2], 'b': 2} != {'a': 1, 'c': [1], 'b': 2}
- {'a': 1, 'b': 2, 'c': [1, 2]}
?                         ---

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

在后者中,您可以确切地看到有什么区别,而不必自己解决。注意,您可以使用标准的assertEqual而不是assertDictEqual,结果相同。每个the docs

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

10-09 15:52