Я пытаюсь утверждать, что два словаря почти равны, но у меня это не получается.
Вот пример:
>>> import nose.tools as nt
>>> nt.assert_dict_equal({'a' : 12.4}, {'a' : 5.6 + 6.8})
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/unittest/case.py", line 838, in assertDictEqual
self.fail(self._formatMessage(msg, standardMsg))
File "/usr/lib/python2.7/unittest/case.py", line 413, in fail
raise self.failureException(msg)
AssertionError: {'a': 12.4} != {'a': 12.399999999999999}
- {'a': 12.4}
+ {'a': 12.399999999999999}
Я хотел бы, чтобы это прошло, вот так:
>>> nt.assert_almost_equal(12.4, 5.6 + 6.8)
Я надеюсь, что я пропустил что-то простое, например, nt.assert_almost_dict_equal
, или, может быть, есть параметр, который я мог бы передать nt.assert_dict_equal
, который указывает, насколько близко должны быть числа с плавающей запятой, но я ничего не могу найти.
Конечно, я мог бы просто перебрать словари и использовать nt.assert_almost_equal
для сравнения значений по отдельности; однако в моем случае словарь сложнее, поэтому я надеялся этого избежать.
Как лучше всего утверждать, что два словаря почти равны?
assert_almost_equal
предоставляется только для числовых типов, разница которых может быть вычислена напрямую. - person BrenBarn   schedule 08.05.2014