2010-01-26 15 views
8

¿Hay alguna forma de escribir unittests o doctests para innerfunc?¿Puedo probar la unidad una función interna en python?

def outerfunc(): 
    def innerfunc(): 
     do_something() 
    return innerfunc() 
+1

Normalmente no hace esto: la API es la función adjunta, y las funciones internas son análogas a los bloques de código con nombre en la función. No los prueba directamente, del mismo modo que no prueba un solo bucle dentro de una función directamente; prueba las entradas a la función que ejercita el bloque de código. –

Respuesta

7

Solo si proporciona una forma de extraer el objeto interno de la función, p. Ej.

def outerfunc(calltheinner=True): 
    def innerfunc(): 
     do_something() 
    if calltheinner: 
     return innerfunc() 
    else: 
     return innerfunc 

Si su función externa insiste en ocultar la interior completamente dentro de sí mismo (no dejar que se infiltre aire libre cuando cajoled adecuadamente para hacerlo), su unidad de pruebas no tienen poder para derrotar a esta fuerte apuesta por la privacidad extrema y total de ;-).

+1

que era mi sospecha, gracias. – Gattster

Cuestiones relacionadas