Issue 8074: Fail-fast behavior for unittest (original) (raw)

When a long suite of tests is running, it would be nice to be able to exit out early to see the results of the tests that have run so far.

I would like to see a couple of features included in unittest to this effect that have recently been implemented in django's test runner. The first exits gracefully on ^C, the second allows the user to specify a --failfast option, which causes the test runner to exit after the first failure or error, rather than proceeding with the

If you hit ^C, rather than exit with a stack trace of whatever was happening at the time, unittest should complete the current test, and then exit with the results to that point. A second ^C would be treated as a normal KeyboardInterrupt, in case that last test were somehow running on too long.

{{{ $ python test_module.py ..F.s.^C x

FAIL: test_multiline_equal (main.MyTest) Unicode objects return diffs on failure

Traceback (most recent call last): File "test_test.py", line 39, in test_multiline_equal self.assertEqual(original, revised) AssertionError:


Ran 7 tests in 12.010s

FAILED (failures=1, skipped=1, expected failures=1) }}}

A failfast option could be specified as a keyword argument to unittest.main(), or unittest.main() could read it off the command line, according to the same mechanism used by, e.g., the verbosity option.