2010-04-15 10 views
6

Estoy usando el módulo de prueba de la unidad de python. Me pregunto, de todos modos, ¿hay algún retraso entre cada 2 casos de prueba? Debido a que mi prueba unitaria solo está haciendo una solicitud http y supongo que el servidor puede bloquear la solicitud frecuente desde la misma ip.prueba de la unidad de Python. ¿Cómo agregar un poco de tiempo de descanso entre los casos de prueba?

+2

Una prueba que depende de un servidor HTTP real no es lo que la mayoría de la gente llamaría una prueba unitaria. En general, para las pruebas unitarias se burla del comportamiento del servidor para que no tenga una dependencia donde * necesita * dormir. Aún así es útil saber cómo hacer esto para escribir pruebas de integración. –

Respuesta

11

Ponga un sueño dentro del método tearDown de su TestCase

class ExampleTestCase(unittest.TestCase): 
    def setUp(self): 
     pass 

    def tearDown(self): 
     time.sleep(1) # sleep time in seconds 

Esto ejecutará después de cada prueba dentro de ese TestCase

EDITAR: añade setUp porque el documentation parece indicar tal que pueda no tiene un tearDown sin uno, pero no está claro

+0

Solo para aclararlo, lo hice en 'tearDown' en lugar de' setUp' porque decía "between" y eso automáticamente me hizo pensar que era deseable que el primero se ejecutara inmediatamente (lo que en este caso no está claro). Si no importaba que la demora fuera antes o después de la primera prueba, ponerla en 'setUp' y dejar' tearDown' también funcionaría bien. –

+0

esto funcionó. muchas gracias – zsong

1
import time 
time.sleep(2.5) # sleeps for 2.5 seconds 

Es posible que desee considerar convertir el retraso en un valor aleatorio entre x e y.

+0

¿Quiere decir que tengo que poner esto después de cada caso de prueba? ¿Hay alguna configuración universal que pueda usar para lograr lo mismo? – zsong

+0

Difícil de ver sin ver su código ... pero probablemente pueda hacer que todos sus casos de prueba hereden de un testcase común que proporciona un método 'def setUp (self):' que hace la llamada 'time.sleep'. – ChristopheD

Cuestiones relacionadas