2012-04-09 10 views
10

Estoy tratando de entrar en pruebas en python usando el módulo doctest. En este momento lo hagoPython: ¿Es posible probar solo funciones específicas con doctest en un módulo?

  1. Escriba las pruebas para las funciones.
  2. implementar el código de funciones.
  3. Si pasan las pruebas, escriba más pruebas y más código.
  4. Cuando la función está lista pase a la siguiente función para implementar.

De modo que después de 3 o 4 funciones (independientes) en el mismo módulo con muchas pruebas, doctest me da una gran salida. Y es un poco molesto.

¿Hay una manera de contar doctest "no probar funciones a(), b() y c()", para que se ejecute solamente las sin marcar funciones?

Encontré la bandera doctest.SKIP, que no es suficiente para mis necesidades. Tendría que colocar esta bandera en muchas líneas. Y si quisiera verificar una función marcada otra vez, tendría que ir manualmente a través del código y eliminar cualquier marca que establezca dentro ...

Espero que entiendas lo que quiero decir ... :-)

¿Alguna sugerencia?

+0

Doctest no es malo para algunas pruebas rápidas y sucias, pero te sugiero encarecidamente buscar en una biblioteca de pruebas más avanzada. Python construido en el módulo 'unittest' es realmente muy bueno. (http://docs.python.org/library/unittest.html) – Wilduck

+0

@Wildluck: Sé de las pitones 'unittest', gracias. Pero todo lo que necesito ahora es * pruebas rápidas y sucias *. :-) – Aufwind

Respuesta

13

looks like que podría pasar a la función run_docstring_examples:

def f(a, b, c): 
    ''' 
    >>> f(1,2,3) 
    42 
    ''' 

if __name__ == '__main__': 
    import doctest 
# doctest.testmod() 
    doctest.run_docstring_examples(f, globals()) 

example encontrar a través de Google.

+1

¿No funcionó? –

+0

Funcionó, gracias. ¡Perdón por responder tan tarde! Extraño el resumen de 'doctest.testmod (verbose = True)' donde dice algo como * 18 pasado y 0 fallido *, y tal. Aparte de eso, es algo de lo que estaba buscando. :-) – Aufwind

+0

¿Y qué hay de hacer esto desde una copia y sin modificar el archivo fuente? – Chris

Cuestiones relacionadas