Я предполагаю, что вы оборачиваете код try / кроме функции, которую вы хотите протестировать. Вот два варианта для проверки этого:
1) Используйте менеджер контекста , чтобы проверить, что вызвано исключение, после изменения вашей функции, чтобы повторно вызвать ValueError (хотя, если вы не собираясь ничего с этим делать, вы могли бы просто не поймать это в первую очередь):
from unittest import TestCase, mock
def do_something(c):
try:
c.do_something()
except ValueError as e:
raise e
class TestSomething(TestCase):
def test_do_something(self):
context = mock.MagicMock()
context.do_something.side_effect = ValueError
with self.assertRaises(ValueError):
do_something(context)
2) Вернуть True в успешном пути управления вашей функцией, а затем просто проверить это условие в ваш тест:
from unittest import TestCase, mock
def do_something(c):
try:
c.do_something()
return True
except ValueError as e:
return False
class TestSomething(TestCase):
def test_do_something(self):
context = mock.MagicMock()
context.do_something.side_effect = ValueError
self.assertTrue(do_something(context))