New submission from Matthew Woodcraft <matt...@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 <rep...@bugs.python.org> <http://bugs.python.org/issue9977> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com