Fixes Issue #20165: The unittest module no longer considers tests marked with
@expectedFailure successful if they pass.
This commit is contained in:
parent
b599c61179
commit
5a6d4bf671
|
@ -1772,6 +1772,10 @@ Loading and running tests
|
|||
Return ``True`` if all tests run so far have passed, otherwise returns
|
||||
``False``.
|
||||
|
||||
.. versionchanged:: 3.4
|
||||
Returns ``False`` if there were any :attr:`unexpectedSuccesses`
|
||||
from tests marked with the :func:`expectedFailure` decorator.
|
||||
|
||||
|
||||
.. method:: stop()
|
||||
|
||||
|
|
|
@ -156,11 +156,16 @@ class TestResult(object):
|
|||
self.unexpectedSuccesses.append(test)
|
||||
|
||||
def wasSuccessful(self):
|
||||
"Tells whether or not this result was a success"
|
||||
return len(self.failures) == len(self.errors) == 0
|
||||
"""Tells whether or not this result was a success."""
|
||||
# The hasattr check is for test_result's OldResult test. That
|
||||
# way this method works on objects that lack the attribute.
|
||||
# (where would such result intances come from? old stored pickles?)
|
||||
return ((len(self.failures) == len(self.errors) == 0) and
|
||||
(not hasattr(self, 'unexpectedSuccesses') or
|
||||
len(self.unexpectedSuccesses) == 0))
|
||||
|
||||
def stop(self):
|
||||
"Indicates that the tests should be aborted"
|
||||
"""Indicates that the tests should be aborted."""
|
||||
self.shouldStop = True
|
||||
|
||||
def _exc_info_to_string(self, err, test):
|
||||
|
|
|
@ -158,7 +158,7 @@ class Test_TestSkipping(unittest.TestCase):
|
|||
['startTest', 'addUnexpectedSuccess', 'stopTest'])
|
||||
self.assertFalse(result.failures)
|
||||
self.assertEqual(result.unexpectedSuccesses, [test])
|
||||
self.assertTrue(result.wasSuccessful())
|
||||
self.assertFalse(result.wasSuccessful())
|
||||
|
||||
def test_unexpected_success_subtests(self):
|
||||
# Success in all subtests counts as the unexpected success of
|
||||
|
@ -182,7 +182,7 @@ class Test_TestSkipping(unittest.TestCase):
|
|||
'addUnexpectedSuccess', 'stopTest'])
|
||||
self.assertFalse(result.failures)
|
||||
self.assertEqual(result.unexpectedSuccesses, [test])
|
||||
self.assertTrue(result.wasSuccessful())
|
||||
self.assertFalse(result.wasSuccessful())
|
||||
|
||||
def test_skip_doesnt_run_setup(self):
|
||||
class Foo(unittest.TestCase):
|
||||
|
|
|
@ -25,6 +25,9 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #20165: The unittest module no longer considers tests marked with
|
||||
@expectedFailure successful if they pass.
|
||||
|
||||
- Issue #18574: Added missing newline in 100-Continue reply from
|
||||
http.server.BaseHTTPRequestHandler. Patch by Nikolaus Rath.
|
||||
|
||||
|
|
Loading…
Reference in New Issue