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:
- Lorem ipsum dolor sit amet, ? ^
- Lorem ipsum color sit amet, ? ^ consectetur adipisicing elit,
that's the way the cookie crumbles, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
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.