msg230783 - (view) |
Author: Robert Collins (rbcollins) *  |
Date: 2014-11-07 10:21 |
Unexpected successes cause failures, but we don't output details about them at the end of the run. From https://code.google.com/p/unittest-ext/issues/detail?id=22 A complicating factor is that we don't have a backtrace to show - but we may have captured stdout/stderr or in future various test attachments to show. |
|
|
msg407833 - (view) |
Author: Irit Katriel (iritkatriel) *  |
Date: 2021-12-06 16:27 |
I think this has been fixed: % cat mm.py import unittest class TestStringMethods(unittest.TestCase): @unittest.expectedFailure def test_upper(self): self.assertEqual(2, 2) if __name__ == '__main__': unittest.main() % ./python.exe mm.py x ---------------------------------------------------------------------- Ran 1 test in 0.001s OK (expected failures=1) iritkatriel@Irits-MBP cpython % vi mm.py iritkatriel@Irits-MBP cpython % ./python.exe mm.py u ---------------------------------------------------------------------- Ran 1 test in 0.000s FAILED (unexpected successes=1) |
|
|
msg407834 - (view) |
Author: Irit Katriel (iritkatriel) *  |
Date: 2021-12-06 16:28 |
Or do you mean that there should be more output? |
|
|
msg408679 - (view) |
Author: Irit Katriel (iritkatriel) *  |
Date: 2021-12-16 09:46 |
In verbose mode we do get output like the one in the code.google issue: % cat tmp.py import unittest class TestStringMethods(unittest.TestCase): @unittest.expectedFailure def test_upper(self): self.assertEqual(2, 2) def test_lower(self): return if __name__ == '__main__': unittest.main() % ./python.exe -m tmp -v test_lower (__main__.TestStringMethods) ... ok test_upper (__main__.TestStringMethods) ... unexpected success |
|
|
msg408681 - (view) |
Author: Irit Katriel (iritkatriel) *  |
Date: 2021-12-16 09:48 |
I don't think adding more information from the test would be helpful - when a test fails you have (and need) information about what happened. But when a test succeeds the code of the test basically tells you what happened - all the assertions passed. I think we can close this. |
|
|
msg408683 - (view) |
Author: Serhiy Storchaka (serhiy.storchaka) *  |
Date: 2021-12-16 10:15 |
I think the OP means that test details (test description, traceback, captured output) are printed for ERROR and FAIL in TextTestResult.printErrors(). Other possible results besides error and failure are success, skipped, expected failure and unexpected success. Success, skipped and expected failure are expected, they do not cause total failure, but unexpected success is different. Result.wasSuccessful() returns False if there are any errors, failures or unexpected successes. But unlike errors and failures we do not have any details about unexpected successes. It looks like oversight to me. Yes, there are no traceback for unexpected success, but at least we can output the test description and captured output. |
|
|
msg408685 - (view) |
Author: Serhiy Storchaka (serhiy.storchaka) *  |
Date: 2021-12-16 10:57 |
There are no other details for unexpected successes, only test descriptions. |
|
|
msg408689 - (view) |
Author: Irit Katriel (iritkatriel) *  |
Date: 2021-12-16 11:37 |
Yes, this is why I don’t understand the request here. When a test fails you know which assertion was violated or which line raised an exception. When a multi line test succeeds, you don’t know which line was supposed to fail. |
|
|
msg408690 - (view) |
Author: Irit Katriel (iritkatriel) *  |
Date: 2021-12-16 11:42 |
I know that in unittest2 an unexpected success did not cause the test to fail (when we moved from unittest2 to unittest at work we got test failures due to unexpected successes that previously did not show up). I don't know the whole history of how unittest2 came to be, I think it was a clone of an older copy of unittest? Maybe that it the background for this issue? |
|
|
msg408693 - (view) |
Author: Serhiy Storchaka (serhiy.storchaka) *  |
Date: 2021-12-16 11:52 |
Unless you tun tests in verbose mode you do not know which of tests was unexpectedly successful. And even in the verbose mode it is not easy to find that test in long output. Yes, unexpected successes considered successes in earlier versions. See . You can find many interesting when read git logs. |
|
|
msg409190 - (view) |
Author: Serhiy Storchaka (serhiy.storchaka) *  |
Date: 2021-12-26 11:22 |
New changeset 1944434b44e0118e812bf63f47b268ff6dd0c8f1 by Serhiy Storchaka in branch 'main': bpo-22815: Print unexpected successes in summary in TextTestResult (GH-30138) https://github.com/python/cpython/commit/1944434b44e0118e812bf63f47b268ff6dd0c8f1 |
|
|