Djangoists:
Because I'm a perfectionist with deadlines, I write scads of developer
tests.
But they too frequently find me comparing two hashes for equality. The
goal of any assertion should be a pristine diagnostic that tells
everything it knows, neatly formatted. So assert_equal() fails on that
last count - neat formatting - hence you should not dump two big
hashes ('dict's) into it. You can never tell which items differ, and
which are just noise.
So I wrote an assertion that only prints out the differing items in
its diagnostic:
def assert_match_hash(self, reference, sample, diagnostic=''):
if reference == sample: return
reference = reference.copy()
sample = sample.copy()
from pprint import pformat
for key, value in reference.items():
if value == sample.get(key, value or True):
reference.pop(key)
sample.pop(key)
diagnostic = ( 'hashes should not differ by these items:' +
'\n%s\n!=\n%s\n%s' %
( pformat(reference),
pformat(sample),
diagnostic or '' ) )
diagnostic = diagnostic.strip()
self.assert_equal( reference, sample, diagnostic )
Can anyone improve it? Did I overlook any dict manipulations that
could simplify it? And if two hash values are themselves hashes, it
could recurse, right?
& Happy April 20th, y'all! Pic not related.
--
Phlip
http://penbird.deviantart.com/art/YARBK2-Charlie-Brown-160323823
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, send email to
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en.