En el marco de Python unittest
, ¿hay alguna forma de pasar una prueba de unidad si no se presentó una excepción y si no con AssertRaise?Pasar una prueba de unidad de Python si no se produce una excepción
Respuesta
Si entiendo bien su pregunta, usted podría 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 que la correcta Exception
consigue elevadas 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 ha señalado en los comentarios, debe tener en cuenta qué es lo que son en realidad pruebas. Es probable que una prueba como ...
def test_what_is_42(self):
self.assertEquals(do_something(42), 'Meaning of life')
... es mejor, ya que pone a prueba el comportamiento deseado del sistema y fallará si una excepción es elevada.
En mi humilde opinión algo así debería ser parte de la clase unittest.TestCase, es una cosa incómoda de querer, pero yo no puede ser la única persona que lo quiere. –
@ Levi Campbell: estoy de acuerdo, un método 'assertDoesNotRaise()' sería más ordenado. N.B: He editado mi respuesta desde que usted aceptó. – Johnsyweb
¿Por qué molestarse en detectar primero una excepción y luego plantear una diferente? Simplemente llame a 'do_something()', y si se genera una excepción, la prueba falla automáticamente. Esta es también la razón por la cual 'assertDoesNotRaise()' no existe. –
Muchos de los comentarios en esta página tratan los errores y fallas como equivalentes, que no lo son. La solución correcta en mi opinión es fallar explícitamente la prueba si se produce la excepción. Ej .:
def test_does_not_error(self):
try:
code_under_test()
except ThatException:
self.fail("code_under_test raised ThatException")
De acuerdo: mientras que la salida de la consola para errores y fallas es comparada por una lectura humana, la mayoría de las herramientas de pruebas unitarias las tratan de forma bastante diferente, ¿no? – hBy2Py
Como se señaló en un comentario de Sven, sólo tiene que llamar 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.
¿Por qué el voto a favor? La respuesta es perfectamente precisa. –
- 1. Python: prueba que se realiza correctamente cuando no se produce una excepción
- 2. Manejo de una excepción de Python que se produce dentro de una cláusula de excepción
- 3. Redirigir asp.net mvc si se produce una excepción personalizada
- 4. WPF: Una aplicación no se cae si se produce una excepción en el evento Loaded
- 5. Mantener una aplicación en ejecución incluso si se produce una excepción no controlada
- 6. Destructor no llama cuando se produce una excepción
- 7. ¿Cómo se produce la salida de prueba de unidad html en Python?
- 8. Excepción de MSTest: el adaptador de prueba de unidad arrojó una excepción: el tipo no se resuelve para el miembro
- 9. unidad que prueba una unidad de trabajo
- 10. cuando corro prueba Mockito se produce WrongTypeOfReturnValue Excepción
- 11. Pruebe si se llama a una función en una prueba de la unidad Ruby on Rails
- 12. Prueba de unidad 3.5 proyecto en VS2010 produce advertencias CS1685
- 13. Mocking HTTPResponse en una prueba de unidad
- 14. python & maven (integración de prueba de unidad)
- 15. ¿Cómo se prueba que una función de Python arroja una excepción?
- 16. ¿Permanece bloqueado un objeto bloqueado si se produce una excepción dentro de él?
- 17. La prueba de unidad arroja una excepción pero no puede ver el mensaje
- 18. Prueba de prueba de unidad de Python MongoDB falla aleatoriamente
- 19. ¿Qué excepción se produce cuando la clave no se encuentra en el diccionario de Python?
- 20. Prueba de unidad con una biblioteca estática
- 21. Unidad Prueba una carga de archivo, ¿cómo?
- 22. Localizar el número de línea donde se produce una excepción en el código Python
- 23. Configuración del código de salida en Python cuando se produce una excepción
- 24. Prueba de unidad C#, cómo realizar una prueba mayor que
- 25. Prueba de unidad de que un evento se produce en C#, utilizando la reflexión
- 26. unidad de prueba decoradores en Python
- 27. Cómo reiniciar Thread.CurrentPrincipal a una prueba no autenticada en una Unidad de Prueba
- 28. "App_GlobalResources" no se carga en un caso de prueba Unidad
- 29. Prueba si la propiedad arroja una excepción con nunit
- 30. Spring Batch SkipListener no se llama cuando se produce una excepción en el lector
Solo he encontrado la necesidad de hacer esto cuando pruebo el código heredado y hago una serie de pruebas de cordura. Estas son pruebas sin ningún Asserts (básicamente verificando que el bloque de código se ejecuta sin explotar). Cualquier excepción inesperada no pasa la prueba de todos modos, no estoy seguro de si el framework de Python funciona de manera similar a la familia xUnit. – Gishu
Posible duplicado de: http://stackoverflow.com/questions/4319825/python-unittest-opposite-of-assertraises –