Kit Yan Choi <[email protected]> added the comment:
For your test:
class T(unittest.TestCase):
def test_f(self): raise TypeError()
If you run this test with unittest test runner, you should get this result:
E
======================================================================
ERROR: test_f (test_main.T)
----------------------------------------------------------------------
Traceback (most recent call last):
File "test_main.py", line 5, in test_f
def test_f(self): raise TypeError()
TypeError
----------------------------------------------------------------------
Ran 1 test in 0.000s
FAILED (errors=1)
I expect to get this behaviour even if the test is decorated with
unittest.expectedFailure. However, currently we get a success.
Scenario:
You create a class named Duck with a method "quack". Then you added a test,
and test needs to call Duck.quack.
Later on for whatever reason, you need to decorate the test with
expectedFailure. The test passes with the expected failure.
Then you rename the "quack" method to "walk", but you forget to update the
test. Now the test is actually failing with an AttributeError, but you won't
notice it because expectedFailure silences it.
In this scenario, it is important to differentiate a "test error" and a "test
failure". A test has four status: success, failure, error, skipped. I expect
unittest.expectedFailure to make "failure" a "success" and a "success" a
"failure", and it should leave "error" and "skipped" unchanged.
Please consider reopening this issue.
----------
nosy: +Kit Yan Choi
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue38296>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com