[New-bugs-announce] [issue9977] TestCase.assertItemsEqual's description of differences
Matthew Woodcraft
report at bugs.python.org
Tue Sep 28 22:15:22 CEST 2010
New submission from Matthew Woodcraft <matthew at woodcraft.me.uk>:
TestCase.assertItemsEqual uses two different techniques to describe the
differences in the inputs that it compares.
If the inputs are sortable, it sorts them and then uses
assertSequenceEqual to describe the difference between them considered
as ordered sequences.
Otherwise, it uses unittest.util.unorderable_list_difference, which
is essentially a multiset comparison.
In practice, I think the output from unorderable_list_difference is
usually more readable, so I wonder if something of that kind should be
made the default.
Example:
a = [('b', (2, 3)), ('w', (3, 4))]
b = [('x', (2, 3)), ('w', (3, 4))]
case.assertItemsEqual(a, b)
unorderable_list_difference gives
Expected, but missing:
[('b', (2, 3))]
Unexpected, but present:
[('x', (2, 3))]
while the current assertItemsEqual gives
Sequences differ: [('b', (2, 3)), ('w', (3, 4))] != [('w', (3, 4)), ('x', (2, 3))]
First differing element 0:
('b', (2, 3))
('w', (3, 4))
- [('b', (2, 3)), ('w', (3, 4))]
+ [('w', (3, 4)), ('x', (2, 3))]
In general, I think that the 'first differing element' paragraph that
assertSequenceEqual produces is as likely to be misleading as it is to
be helpful (when we're really comparing unordered sequences).
----------
messages: 117545
nosy: mattheww, michael.foord
priority: normal
severity: normal
status: open
title: TestCase.assertItemsEqual's description of differences
type: feature request
_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue9977>
_______________________________________
More information about the New-bugs-announce
mailing list