老实说,我一直都在使用assertDictEqual
,因为有时当我没有使用它时,我得到的信息是,相同的dicts不一样.
但是......我知道==
操作员可以比较dicts :
>>> {'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
,使用相同的结果; 根据文档
...通常没有必要直接调用这些方法.