Can*_*ic3 3 python unit-testing python-2.7 python-unittest
这是在Python 2.7。我有一个名为的类class A,并且有一些属性由用户设置时会引发异常:
myA = A()
myA.myattribute = 9 # this should throw an error
Run Code Online (Sandbox Code Playgroud)
我想写一个unittest确保它引发错误的代码。
创建测试类并继承后unittest.TestCase,我尝试编写如下测试:
myA = A()
self.assertRaises(AttributeError, eval('myA.myattribute = 9'))
Run Code Online (Sandbox Code Playgroud)
但是,这引发了syntax error。但是,如果尝试eval('myA.myattribute = 9'),它将抛出属性错误,应有的错误。
如何编写单元测试以正确测试?
谢谢。
您还可以assertRaises用作上下文管理器:
with self.assertRaises(AttributeError):
myA.myattribute = 9
Run Code Online (Sandbox Code Playgroud)
如果您有兴趣,文档中会显示更多示例。assertRaises的文档也对此主题有更多详细信息。
从该文档中:
如果仅给出异常和可能的msg参数,则返回一个上下文管理器,以便可以将内测代码而不是作为函数编写:
Run Code Online (Sandbox Code Playgroud)with self.assertRaises(SomeException): do_something()
这正是您要尝试做的。