Pase una prueba de unidad de Python si no se lanza una excepción

En el marco de prueba de unidad de Python, ¿hay una manera de pasar una prueba de unidad si no se produjo una excepción y, de lo contrario, falla con un AssertRaise?

Si entiendo tu pregunta correctamente, podrías hacer algo como esto:

 def test_does_not_raise_on_valid_input(self): raised = False try: do_something(42) except: raised = True self.assertFalse(raised, 'Exception raised') 

… asumiendo que tiene una prueba correspondiente de que la Exception correcta se genera en una entrada no válida, por supuesto:

 def test_does_raise_on_invalid_input(self): self.assertRaises(OutOfCheese, do_something, 43) 

Sin embargo, como se señaló en los comentarios, debe considerar qué es lo que realmente está probando. Es probable que una prueba como …

 def test_what_is_42(self): self.assertEquals(do_something(42), 'Meaning of life') 

… es mejor porque prueba el comportamiento deseado del sistema y fallará si se produce una excepción.

Muchos de los comentarios en esta página tratan los errores y las fallas como equivalentes, pero no lo son. En mi opinión, la solución correcta es fallar explícitamente la prueba si se produce la excepción. P.ej:

 def test_does_not_error(self): try: code_under_test() except ThatException: self.fail("code_under_test raised ThatException") 

Como se señala en un comentario de Sven, simplemente llame a su funcionalidad, por ejemplo, do_something() . Si se genera una excepción no controlada, la prueba falla automáticamente! Realmente no hay razón para hacer otra cosa. Esta es también la razón por la cual assertDoesNotRaise() no existe.