Use assert statements in tests
Make assert statements print pretty output, including source.
This makes assert x == y
more usable, as an alternative to
self.assertEqual(x, y)
This plugin implements outcomeDetail()
and checks for event.exc_info
If it finds that an AssertionError happened, it will inspect the traceback and
add additional detail to the error report.
Configuration [pretty-assert]
- always-on
- Default
False
- Type
boolean
Sample configuration
The default configuration is equivalent to including the following in a unittest.cfg
file.
[pretty-assert]
always-on = False
Command-line options
- --pretty-assert DEFAULT
Add pretty output for “assert” statements
Plugin class reference: PrettyAssert
- class nose2.plugins.prettyassert.PrettyAssert(*args, **kwargs)[source]
Add pretty output for “assert” statements
- static addAssertDetail(extraDetail, exc, trace)[source]
Add details to output regarding AssertionError and its context
extraDetail: a list of lines which will be joined with newlines and added to the output for this test failure – defined as part of the event format
exc: the AssertionError exception which was thrown
trace: a traceback object for the exception
assert statement inspection
The prettyassert plugin works by inspecting the stack frame which raised an AssertionError. Unlike pytest’s assertion rewriting code, it does not modify the built-in AssertionError.
As a result, it is somewhat limited in its capabilities – it can only report the bound values from that stack frame. That means that this type of statement works well:
x = f()
y = g()
assert x == y
but this type of statement does not:
assert f() == g()
It will still run, but the prettyassert will tell you that f and g are functions, not what they evaluated to. This is probably not what you want.
attribute resolution
The assertion inspection will resolve attributes, so that expressions like this will work as well:
assert x.foo == 1
But note that the attribute x.foo will be resolved twice in this case, if the assertion fails. Once when the assertion is evaluated, and again when it is inspected.
As a result, properties with dynamic values may not behave as expected under prettyassert inspection.