Parfois, les fonctions privées d'un module ou d'une classe sont simplement des unités de fonctionnalité internes à extraire, qui pourraient mériter leurs propres tests. Alors pourquoi ne pas les tester? Nous allons écrire des tests pour eux plus tard si / quand ils sont extraits. Alors pourquoi ne pas écrire les tests maintenant, alors qu'ils font toujours partie du même fichier?
Démontrer:
J'ai d'abord écrit module_a
. Maintenant, je veux écrire des tests pour cela. Je voudrais tester la fonction "privée" _private_func
. Je ne comprends pas pourquoi je n'écrirais pas de test pour cela, si plus tard je pouvais le refactoriser dans son propre module interne de toute façon, puis écrire des tests pour cela.
Supposons que j'ai un module avec les fonctions suivantes (il pourrait également s'agir d'une classe):
def public_func(a):
b = _do_stuff(a)
return _do_more_stuff(b)
_do_stuff
et _do_more_stuff
sont des fonctions «privées» du module.
Je comprends l'idée que nous devrions uniquement tester l'interface publique, pas les détails de mise en œuvre. Cependant, voici la chose:
_do_stuff
et _do_more_stuff
contiennent la majorité des fonctionnalités du module. Chacun d'eux pourrait être une fonction publique d'un module «interne» différent. Mais ils ne sont pas encore évolués et suffisamment volumineux pour être extraits dans des fichiers séparés.
Il est donc judicieux de tester ces fonctions, car ce sont des unités de fonctionnalité importantes. S'ils étaient dans différents modules en tant que fonctions publiques, nous les aurions testés. Alors pourquoi ne pas les tester lorsqu'ils ne sont pas encore (ou jamais) extraits dans un fichier différent?