Я использую свойство setter и выдает ошибки, если входные данные не ожидаемого типа. Я также провожу модульное тестирование всех функций и хочу проверить, что исключение на самом деле возникает при использовании сеттера.
Я пытаюсь получить вызываемое значение для unittest.TestCase.assertRaises
. Вот пример:
import unittest
class A:
def __init__(self, num):
self.var = num
@property
def var(self):
return self._var
@var.setter
def var(self, new):
if not isinstance(new, int):
raise TypeError
self._var = new
class TestA(unittest.TestCase):
def test_a_setter(self):
a = A(5)
self.assertRaises(TypeError, a.var = 'a') #<--- a not working try
if __name__ == '__main__':
unittest.main()
Есть ли способ вызвать вызывающее устройство? Иначе, я просто буду использовать блок try ... except
, но это не похоже на чистое решение.
Еще одна идея, которую я получил, - использовать setattr
, но это не работает со свойством.