A volte le funzioni private di un modulo o di una classe sono unità interne di funzionalità semplicemente ancora da estrarre, che potrebbero meritare i propri test. Quindi perché non provarli? Ci sarà scrivere i test per loro in seguito, se / quando sono estratti. Quindi perché non scrivere i test ora, quando fanno ancora parte dello stesso file?
Dimostrare:
Prima ho scritto module_a
. Ora voglio scrivere dei test per questo. Vorrei testare la funzione "privata" _private_func
. Non capisco perché non scriverei un test per esso, se in seguito potessi rifattorizzarlo sul suo modulo interno e poi scrivere test per esso.
Supponiamo che io abbia un modulo con le seguenti funzioni (potrebbe anche essere una classe):
def public_func(a):
b = _do_stuff(a)
return _do_more_stuff(b)
_do_stuff
e _do_more_stuff
sono funzioni "private" del modulo.
Comprendo l'idea che dovremmo testare solo l'interfaccia pubblica, non i dettagli di implementazione. Tuttavia, ecco la cosa:
_do_stuff
e _do_more_stuff
contiene la maggior parte delle funzionalità del modulo. Ognuno di essi potrebbe essere una funzione pubblica di un diverso modulo "interno". Ma non sono ancora evoluti e abbastanza grandi per essere estratti in file separati.
Quindi testare queste funzioni sembra giusto perché sono importanti unità di funzionalità. Se fossero stati in moduli diversi come funzioni pubbliche, li avremmo testati. Quindi perché non provarli quando non sono ancora (o mai) estratti in un altro file?