2011-07-01 13 views
8

Quiero que mis pruebas fallen si tardan más de cierto tiempo en ejecutarse (digamos 500ms) porque es una mierda cuando se acumulan cargas lentas y repentinamente tienes este gran retraso cada vez usted ejecuta el conjunto de pruebas. ¿Hay algún complemento o algo para Nose que ya lo haga?Haciendo pruebas fallidas de nose nose

Respuesta

7

Respetuosamente sugiero que cambiar el significado de "roto" es una mala idea.

El significado de una prueba fallida/"roja" nunca debe ser otra que "esta funcionalidad está rota". Para hacer cualquier otra cosa, se corre el riesgo de diluir el valor de las pruebas.

Si decide implementar esta forma y luego la próxima semana un puñado de pruebas fallan, ¿sería un indicador de que

  • Sus pruebas se ejecutan lentamente?
  • ¿El código está roto?
  • Ambos de los anteriores al mismo tiempo?

que sugieren que sería mejor para reunir MI de su proceso de construcción y el monitor con el fin de detectar pruebas lentas se acumulan, pero dejar que "la funcionalidad roto" media roja en lugar de "funcionalidad roto y/o la prueba lenta. "

+1

Gracias por su respuesta! Eso tiene sentido. ¿Alguna sugerencia para producir un informe de los tiempos de ejecución de casos de prueba? –

+0

@ThomasParslow He estado usando [la función del cronómetro de pinocchio] (http://darcs.idyll.org/~t/projects/pinocchio/doc/#id12) para medir los tiempos de prueba. Produce un pickle que luego puede procesar mediante un simple script de python. –

11

Para los casos en donde el tiempo es importante (por ejemplo, requisitos de tiempo real):

http://nose.readthedocs.org/en/latest/testing_tools.html

nose.tools.timed(limit)

prueba debe terminar dentro del límite de tiempo especificado para pasar.

Ejemplo del uso:

from nose.tools import timed 
@timed(.1) 
def test_that_fails(): 
    time.sleep(.2) 
+1

Sería bueno si funciona – Jack

Cuestiones relacionadas