assertRaises im Python-Unit-Test fängt die Ausnahme nicht ab [duplicate]
Diese Frage hat hier bereits eine Antwort:
Wie testen Sie, ob eine Python-Funktion eine Ausnahme auslöst? 11 AntwortenKann mir jemand sagen, warum der folgende Unit-Test auf dem ValueError in test_bad fehlschlägt, anstatt ihn mit assertRaises abzufangen und erfolgreich zu sein? Ich denke, ich verwende die richtige Prozedur und Syntax, aber der ValueError wird nicht abgefangen.
Ich benutze Python 2.7.5 auf einer Linux-Box.
Hier ist der Code ...
import unittest
class IsOne(object):
def __init__(self):
pass
def is_one(self, i):
if (i != 1):
raise ValueError
class IsOne_test(unittest.TestCase):
def setUp(self):
self.isone = IsOne()
def test_good(self):
self.isone.is_one(1)
self.assertTrue(True)
def test_bad(self):
self.assertRaises(ValueError, self.isone.is_one(2))
if __name__ == "__main__":
unittest.main()
und hier ist die Ausgabe des Unit-Tests:
======================================================================
ERROR: test_bad (__main__.IsOne_test)
----------------------------------------------------------------------
Traceback (most recent call last):
File "test/raises.py", line 20, in test_bad
self.assertRaises(ValueError, self.isone.is_one(2))
File "test/raises.py", line 8, in is_one
raise ValueError
ValueError
----------------------------------------------------------------------
Ran 2 tests in 0.008s
FAILED (errors=1)