【发布时间】:2020-08-02 05:10:10
【问题描述】:
如果输入不是预期的类型,我正在使用属性设置器并引发错误。我也在对所有函数进行单元测试,并想测试在使用 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()
有没有办法让 setter 可调用?否则,我将只使用 try ... except 块,但这看起来不是一个干净的解决方案。
我得到的另一个想法是使用setattr,但这不适用于属性。
【问题讨论】:
标签: python unit-testing properties callable