测试装饰器引发的异常的好方法是什么?

时间:2014-01-27 04:06:25

标签: python unit-testing exception testing python-decorators

在定义装饰器'foo'的模块中,有什么方法可以测试foo应该抛出的异常?我正在寻找一个可以在模块结尾处进行的简单测试,如下所示:

if __name__ == '__main__':

    @foo
    def bar(quux):
        pass

    #test that foo raises a particular exception when decorating bar

我猜我可以制作一个expect_exception装饰器来装饰foo装饰的bar函数。有没有更好的办法?也许最简单的方法是“手动”应用装饰器?:

    try:
        bar = foo(bar)
    except FooException:
        # test passed

1 个答案:

答案 0 :(得分:1)

如您所述,“手动”装饰它将起作用。您也可以通常在函数内部进行修饰或尝试/除外:

try:
    @foo
    def bar(quux):
        pass
except FooException:
    # test passed