assertRaises в модульном тесте python не перехватывает исключение [duplicate]
На этот вопрос уже есть ответ здесь:
Как вы проверяете, что функция Python генерирует исключение? 11 ответовМожет кто-нибудь сказать мне, почему следующий модульный тест завершается с ошибкой ValueError в test_bad, а не перехватывает его с помощью assertRaises и завершается успешно? Я думаю, что я использую правильную процедуру и синтаксис, но ValueError не ловится.
Я использую Python 2.7.5 на Linux.
Вот код ...
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()
и вот результат модульного теста:
======================================================================
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)