查找类型的异常

问题描述:

我已经做了一个类(从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作为参数,但也失败了,输出相同。

+0

你的测试没有意义。异常不会引发另一个异常。您应该测试您的实际代码是否引发InvalidFilterException。 –

+0

是不是因为你不'raise'异常,只有'__init__'呢? – Stael

+0

@不改变第一个参数会使测试通过。你想要确定什么? – Goyo

在你的情况下,你正在尝试InvalidFilterException,因为assertRaises的第二个参数是可调用的,你想测试。

您需要使用您的异常像...

assertRaises(InvalidFilterException, do_something, arg1, arg2) 

with assertRaises(InvalidFilterException): 
    do_something(arg1, arg2) 

do_something是需要测试你的函数或可调用。

+0

'do_something()'函数到底会做什么?据我所知,如果'do_something(arg1,arg2)'运行时引发'InvalidFilterException',测试会通过。 –

+0

是的..所以你想测试的功能或代码块将do_something – viveksyngh

+0

你可以参考这个链接的更多信息... https://stackoverflow.com/questions/129507/how-do-you-测试该-A-蟒功能抛出-AN-异常?RQ = 1 – viveksyngh