You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
assignee='https://github.com/serhiy-storchaka'closed_at=<Date2021-12-26.11:23:43.418>created_at=<Date2014-11-07.10:21:48.117>labels= ['type-feature', 'library', '3.11']
title='unexpected successes are not output'updated_at=<Date2021-12-26.11:23:43.418>user='https://github.com/rbtcollins'
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.
% ./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
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 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.
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.
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?
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 bpo-20165.
Activity
rbtcollins commentedon Nov 7, 2014
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.
iritkatriel commentedon Dec 6, 2021
I think this has been fixed:
% cat mm.py
import unittest
% ./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)
iritkatriel commentedon Dec 6, 2021
Or do you mean that there should be more output?
iritkatriel commentedon Dec 16, 2021
In verbose mode we do get output like the one in the code.google issue:
% cat tmp.py
% ./python.exe -m tmp -v
test_lower (main.TestStringMethods) ... ok
test_upper (main.TestStringMethods) ... unexpected success
iritkatriel commentedon Dec 16, 2021
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.
serhiy-storchaka commentedon Dec 16, 2021
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.
serhiy-storchaka commentedon Dec 16, 2021
There are no other details for unexpected successes, only test descriptions.
iritkatriel commentedon Dec 16, 2021
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.
iritkatriel commentedon Dec 16, 2021
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?
serhiy-storchaka commentedon Dec 16, 2021
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 bpo-20165.
You can find many interesting when read git logs.
serhiy-storchaka commentedon Dec 26, 2021
New changeset 1944434 by Serhiy Storchaka in branch 'main':
bpo-22815: Print unexpected successes in summary in TextTestResult (GH-30138)
1944434