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()
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()
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 ;-).
c'était ma suspicion, merci. – Gattster
Ceci est en fait un vieux problème Python ouvert:
Il y a un patch candidat (à partir de 2007) qui fait doctest trouver des fonctions imbriquées, mais quelqu'un a probablement besoin de pousser cela.
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. –