Я в основном согласен с @DeepSpace, но если вы хотите продолжать использовать assert
, вы можете проверить, что ваша функция повышает AssertionError
в ожидаемых вами условиях.
def do_something(m, n):
assert m != 0, "m has to be greater than 1"
class TestDoSomething(unittest.TestCase):
def test_raises_for_zero(self):
with self.assertRaises(AssertionError):
do_something(0, 'whatever')
def test_raises_for_negative(self):
with self.assertRaises(AssertionError):
do_something(-1, 'whatever')
И, чтобы расширить на ваш вопрос о контекстных менеджерах. В наших примерах мы используем менеджер контекста, когда мы вызываем self.assertRaises
в операторах with
. Менеджеры контекста полезны, когда мы временно хотим изменить то, как что-то работает или выглядит, в этом примере менеджер контекста помогает нам перехватить исключение и убедиться, что оно вызывается при вызове do_something
с определенными аргументами.