gpt4 book ai didi

python-2.7 - 检查 Python 2.7 中是否正确引发异常?

转载 作者:行者123 更新时间:2023-12-05 04:10:50 27 4
gpt4 key购买 nike

有谁知道如何检查是否正确引发了异常?

我需要能在 Python 2.7 中运行的东西。下面的“断言”不是从 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'

最佳答案

如果您只是想确保它引发正确类型的异常,您可以使用:

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 的行为相同,但正则表达式称为 assertRegex(无 p)。

编辑:正如评论中所指出的,这仅在您使用单元测试样式的测试类时才有效。如果您使用的是 py.test,it has its own similar methods you can use .

关于python-2.7 - 检查 Python 2.7 中是否正确引发异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43814495/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com