Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use nose's assert_raises?

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_raises(what should I put here?) 

function and how to use it?

like image 342
user1544624 Avatar asked Aug 01 '12 21:08

user1544624


People also ask

Which command is used to run nose tests?

nose can be integrated with DocTest by using with-doctest option in athe bove command line. The result will be true if the test run is successful, or false if it fails or raises an uncaught exception. nose supports fixtures (setup and teardown methods) at the package, module, class, and test level.

What is nose tools in Python?

The nose. tools module provides a number of testing aids that you may find useful, including decorators for restricting test execution time and testing for exceptions, and all of the same assertX methods found in unittest.


1 Answers

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!') 
like image 143
BuddhiP Avatar answered Sep 28 '22 17:09

BuddhiP