Не знаю как Вам, а мне иногда очень не хватает возможности стандартного diff
для сравнения двух питоновских кортежей или словарей. Особенно хочется получать такой дифф в тестах.
И как оказалось, Dave Brondsema реализовал все мои хотелки в своей библиотеке datadiff. На данный момент datadiff
умеет сравнивать две структуры и обладает заменителем nose.tools.assert_equal
:
>>> from datadiff import diff
>>> a = dict(foo=1, bar=2, baz=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
>>> b = dict(foo=1, bar=4, baz=[0, 1, 2, 3, 4, 5, 6, 7, 8])
>>> print diff(a, b)
--- a
+++ b
{
-'bar': 2,
+'bar': 4,
'baz': [
@@ -5,11 +5,8 @@
6,
7,
8,
-9,
-10,
-11,
],
'foo': 1,
}
>>> from datadiff.tools import assert_equal
>>> assert_equal([1, 2, 3], [1, 2, 5])
Traceback (most recent call last):
File "", line 1, in
File "datadiff/tools.py", line 29, in assert_equal
raise AssertionError(msg)
AssertionError:
--- a
+++ b
[
@@ -0,2 +0,2 @@
1,
2,
-3,
+5,
]
Выглядит замечательно и я в ближайшее время добавлю поддержку datadiff
, в tddspry
.