Issue 588825: unittest.py, better error message (original) (raw)

These two methods of the class TestCase are not very good:

def failUnlessEqual(self, first, second, msg=None):
    """Fail if the two objects are unequal as

determined by the '!=' operator. """ if first != second: raise self.failureException,
(msg or '%s != %s' % (first, second))

def failIfEqual(self, first, second, msg=None):
    """Fail if the two objects are equal as

determined by the '==' operator. """ if first == second: raise self.failureException,
(msg or '%s == %s' % (first, second))

The first thing is that you should print the difference of the given values like that:

'<%s> == <%s>' % (first, second)

The < and > delimits the string and so is is easier to detect where the string starts and where it ends.

The second thing is that I would really like to see the two values that are (not) equal even if I provide a message. Maybe its better to raise the exception like that:

    if msg is not None:
        msg += ' Expected: <%s>, is: <%s>' %

(first, second) raise self.failureException,
(msg or '%s != %s' % (first, second))

bye Stefan