Pickels
Pickels

Reputation: 34680

Python unit testing: make nose show failed assertions values

is it possible to show the assertion values that failed? It shows the traceback and what kind of exception was throw but it would more practical to know which values failed.

Example:

assert result.file == file
AssertionError

Upvotes: 15

Views: 4750

Answers (3)

Jean-Francois T.
Jean-Francois T.

Reputation: 12960

Another possibility: define your own function that does the trick:

def assert_eq(obt, exp):
    assert obt==exp, "\n*Expected:\n%s\n*Obtained:\n%s" % (exp, obt)

You can call it instead of assert:

assert_eq ( self.data['SQ'].code, "SQ" )

And this returns this nice error:

AssertionError

Upvotes: 1

Jorge Vargas
Jorge Vargas

Reputation: 6942

You should run nosetests -d this will display the values of the objects that fail the compare in assert.

Upvotes: 24

Mikhail Korobov
Mikhail Korobov

Reputation: 22248

assert result.file == file, "%s != %s" % (result.file, file,)

That's why ugly self.assert<Foo> methods were introduced in unittest.TestCase instead of nice and short asserts: self.assert<Foo> methods know how to display failure messages.

By the way, I thought that nose do some black magic so in simple cases

assert a == b

should show meaningful error message.

Upvotes: 6

Related Questions