老实说,我一直使用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/