nose-progressive is a nose plugin which displays progress in a stationary progress bar, freeing the rest of the screen (as well as the scrollback buffer) for the compact display of test failures. It displays failures and errors as soon as they occur and avoids scrolling them off the screen in favor of less useful output.
The governing philosophy of Nose Progressive is to get useful information onto the screen as soon as possible and keep it there as long as possible while still indicating progress.
Installation:
pip install nose-progressive
Or, to get the bleeding-edge, unreleased version:
pip install -e \
git://github.com/erikrose/nose-progressive.git#egg=nose-progressive
Use:
nosetests --with-progressive
Example:
The following doesn't quite do it justice; in an actual terminal, the 2 pathname lines after FAIL or ERROR are bold to aid visual chunking, and the progress bar at the bottom is bold as well:
% nosetests --with-progressive
FAIL: kitsune.apps.notifications.tests.test_events:MailTests.test_anonymous
apps/notifications/tests/test_events.py +31
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/unittest.py", line 279, in run
testMethod()
File "/Users/erose/Checkouts/kitsune/../kitsune/apps/notifications/tests/test_events.py", line 361, in test_anonymous
eq_(1, len(mail.outbox))
File "/Users/erose/Checkouts/kitsune/vendor/packages/nose/nose/tools.py", line 31, in eq_
assert a == b, msg or "%r != %r" % (a, b)
AssertionError
ERROR: kitsune.apps.questions.tests.test_templates:TemplateTestCase.test_woo
apps/questions/tests/test_templates.py +494
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/unittest.py", line 279, in run
testMethod()
File "/Users/erose/Checkouts/kitsune/vendor/packages/mock/mock.py", line 196, in patched
return func(*args, **keywargs)
File "/Users/erose/Checkouts/kitsune/../kitsune/apps/questions/tests/test_templates.py", line 494, in test_woo
attrs_eq(mail.outbox[0], to=['some@bo.dy'],
IndexError: list index out of range
kitsune.apps.questions.tests.test_templates:TaggingViewTestsAsAdmin.test_add_new_canonicalizes [===========- ]
Product's homepage
Here are some key features of "nose-progressive":
· Indicate progress in a stationary progress bar rather than scrolling useful tracebacks off the screen or spacing them out with dots and cruft.
· Show tracebacks as soon as they occur rather than waiting until the bitter end. Strip the "Traceback (most recent call last):" off tracebacks so they take less space.
· Identify failed tests in a format that can be fed back to nose, so it's easy to re-run them.
· Print a filesystem path complete with vi-style line number, so you can paste it to the commandline and be taken straight to the bug in your editor.
· Work great with Django via django-nose (of course).
Requirements:
· Python
· nose
Limitations:
· Skipped tests get counted in Python 2.6, but they don't get printed. I consider skips something to be discouraged, so I plan to fix this.
· Tests which themselves write to stderr will smear bits of the progress bar upward if they don't print complete lines. I hope to fix this with some monkeypatching, but in the meantime, passing --logging-clear-handlers fixes most of these in practice.
· I haven't tried this in anything but Python 2.6. Bug reports are welcome!
What's New in This Release: [ read full changelog ]
· Add the --progressive-editor-shortcut-template option, letting you completely customize the editor shortcuts. Now we support any text editor that has a go-to-line option, no matter how it's spelled.
· Drop support for Python 2.5. We needed modern string formatting.
· Add first-class support for Python 3.2.3 and higher. It turned out my tox config was just wrong.
· Tolerate Nones in traceback components: file names and code extracts particularly. (Kyle Gibson)