Mientras que la respuesta aceptada es correcta, creo que hay una mejor utilización de assert_raises
método.
Si simplemente desea afirmar que se produce una excepción, probablemente sea más simple y más limpio utilizar la sintaxis @raises
.
@raises(HTTPError)
def test_exception_is_raised:
call_your_method(p1, p2)
Sin embargo, supongamos que usted quiere hacer algo más con la excepción planteado, por ejemplo: hay que afirmar que elevó HTTPError es de tipo 401: no autorizado, en lugar de 500: Error de servidor.
En tal situación, por encima de la sintaxis no es tan útil, debemos utilizar el assert_raises
pero de una manera diferente. Si no lo pasamos callable
como el segundo parámetro assert_raises
devolverá un contexto que podemos usar para probar más los detalles de la excepción.
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!')
gracias bien! ¿Pero usted también sabe a enlaces para una buena documentación de la nariz donde puedo checkout otras funciones tales como la nariz assert_equal, assert_raises! @kindall – user1544624
tuve problemas para encontrar eso, también. Sin embargo, puedes probar 'help (assert_rases)'. – kindall
Un poco oculto, pero http://nose.readthedocs.org/en/latest/testing_tools.html#module-nose.tools dice en el primer párrafo: "... y todos los mismos métodos assertX encontrados en unittest.TestCase (solo se deletrea en PEP 8, por lo que assert_equal en vez de assertEqual). ". Aquí está la lista: http://docs.python.org/2/library/unittest.html#assert-methods –