当前位置:  开发笔记 > 编程语言 > 正文

如果dicts可以通过`=='进行比较,为什么需要assertDictEqual?

如何解决《如果dicts可以通过`=='进行比较,为什么需要assertDictEqual?》经验,为你挑选了1个好方法。

老实说,我一直都在使用assertDictEqual,因为有时当我没有使用它时,我得到的信息是,相同的dicts不一样.

但是......我知道==操作员可以比较dicts :

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

我可能需要的地方assertDictEqual



1> jonrsharpe..:

基本上,它允许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,使用相同的结果; 根据文档

...通常没有必要直接调用这些方法.


天哪 @johrsharpe。我没有正确阅读问题。在我看来,问题是“当assertEqual可以比较字典时为什么使用assertDictEqual”
推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有