有谁知道如何检查是否正确引发了异常?
我需要一些适用于Python 2.7的东西。以下'assert'在Python unittest库中的使用方法不太正确:
assert ( a_a0_getinst.add_port("iTCK", ISC.PortType_INPUT) ), "Can't add duplicate port"
我得到的错误是:
Traceback (most recent call last):
File "test_010_module.py", line 157, in runTest
a_a0_addinst = a_a0.add_instance( "A00", b_a0 )
File "/nfs/sc/disks/sc_dteg_2004/users/acheung1/dteg_tools-isc/python/t/ISC.py", line 475, in add_instance
return _ISC.SharedModule_add_instance(self, name, module)
RuntimeError: Can't add duplicate instance with instance name 'A00' to module 'A_A0'
答案 0 :(得分:1)
如果您只是想确保它引发正确类型的异常,您可以使用:
self.assertRaises(RuntimeError, your_function, *args, **kwargs)
在unittest.TestCase类中。请参阅the docs for assertRaises。
如果您还想检查它是否还有正确的错误消息,您可以使用:
self.assertRaisesRegexp(RuntimeError, "error message", your_function_call, *args, **kwargs)
在unittest.TestCase类中。以下是the docs for assertRaisesRegexp。
您也可以将这些作为上下文管理器执行,在这种情况下,您不需要将参数分开:
with self.assertRaises(RuntimeError):
your_function_call(arg1, arg2)
with self.assertRaisesRegexp(RuntimeError, "error message"):
your_function_call(arg1, arg2)
正如您所提到的那样,这些是针对Python 2.7的。对于Python 3.x,assertRaises
的行为相同,但正则表达式1称为assertRegex
(无p
)。