How to use nose's assert_raises?

前端 未结 2 866
粉色の甜心
粉色の甜心 2020-12-28 12:00

I\'ve searched for documentation, but couldn\'t find any. There were a couple that didn\'t explain much.

Can someone explain to me Nose\'s

assert_ra         


        
2条回答
  •  情书的邮戳
    2020-12-28 12:10

    While the accepted answer is correct, I think there is a better use to assert_raises method.

    If you simply want to assert that an exception occurs, it's probably simpler and cleaner to use @raises syntax.

    @raises(HTTPError)
    def test_exception_is_raised:
        call_your_method(p1, p2)
    

    However, assume you want to do bit more with the raised exception, for example: we need to assert that raised HTTPError is of type 401: Unauthorized, instead of 500: Server Error.

    In such a situation above syntax is not that helpful, we should use the assert_raises but in a different way. If we do not pass it a callable as the second parameter assert_raises will return back a context which we can use to further test the exception details.

    def test_exception_is_raised:
        with assert_raises(HTTPError) as cm:
             call_your_method(p1, p2)
        ex = cm.exception # raised exception is available through exception property of context
        ok_(ex.code == 401, 'HTTPError should be Unauthorized!')
    

提交回复
热议问题