查找类型的异常
我已经做了一个类(从Exception
派生):查找类型的异常
class InvalidFilterException(Exception):
#some code here
super().__init__(message)
现在,当我运行此模块测试,使用unittest.Testcase
,运行
assertRaises(Exception, InvalidFilterException, arg1, arg2)
给出的错误:
AssertionError: Exception not raised by InvalidFilterException
有人能告诉我,我应该用Exception
作为assertRaises
中的第一个参数,以便测试通过吗? 我也尝试使用InvalidFilterException
作为参数,但也失败了,输出相同。
在你的情况下,你正在尝试InvalidFilterException,因为assertRaises的第二个参数是可调用的,你想测试。
您需要使用您的异常像...
assertRaises(InvalidFilterException, do_something, arg1, arg2)
或
with assertRaises(InvalidFilterException):
do_something(arg1, arg2)
do_something是需要测试你的函数或可调用。
'do_something()'函数到底会做什么?据我所知,如果'do_something(arg1,arg2)'运行时引发'InvalidFilterException',测试会通过。 –
是的..所以你想测试的功能或代码块将do_something – viveksyngh
你可以参考这个链接的更多信息... https://stackoverflow.com/questions/129507/how-do-you-测试该-A-蟒功能抛出-AN-异常?RQ = 1 – viveksyngh
你的测试没有意义。异常不会引发另一个异常。您应该测试您的实际代码是否引发InvalidFilterException。 –
是不是因为你不'raise'异常,只有'__init__'呢? – Stael
@不改变第一个参数会使测试通过。你想要确定什么? – Goyo