2010-01-26 7 views
8

Est-il possible d'écrire unittests ou doctests pour innerfunc?Puis-je tester une fonction interne en python?

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

Normalement, vous ne faites pas cela: l'API est la fonction englobante, et les fonctions internes sont analogues aux blocs de code nommés dans la fonction. Vous ne les testez pas directement, tout comme vous ne testez pas directement une seule boucle dans une fonction; vous testez les entrées de la fonction qui exerce le bloc de code. –

Répondre

7

Seulement si vous fournissez un moyen d'extraire l'objet de fonction interne lui-même, par ex.

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

Si votre fonction extérieure insiste à cacher l'intérieure entièrement à l'intérieur lui-même (jamais le laisser percoler à l'extérieur lorsqu'il est correctement cajolé de le faire), vos tests unitaires sont impuissants à vaincre cette offre forte de la vie privée extrême et totale ;-).

+1

c'était ma suspicion, merci. – Gattster