Contesto:
Attualmente sto lavorando su un piccolo progetto in Python. Di solito strutturo le mie classi con alcuni metodi pubblici che sono documentati ma riguardano principalmente i concetti di alto livello (ciò che un utente della classe dovrebbe conoscere e usare), e un gruppo di nascosti (a partire da underscore) metodi che sono responsabili dell'elaborazione complessa o di basso livello.
So che i test sono essenziali per dare fiducia al codice e per garantire che qualsiasi modifica successiva non abbia infranto il comportamento precedente.
Problema:
Per costruire metodi pubblici di livello superiore su una base attendibile, generalmente collaudo i metodi privati. Trovo più facile scoprire se una modifica del codice ha introdotto regressioni e dove. Significa che i test interni possono essere violati in piccole revisioni e dovranno essere riparati / sostituiti
Ma so anche che l'unità che testa il metodo privato è almeno un concetto contestato o più spesso considerata una cattiva pratica. Il motivo è: solo il comportamento pubblico dovrebbe essere testato ( ref. )
Domanda:
Mi interessa seguire le best practice e vorrei capire:
- perché utilizzare i test di unità su metodi privati / nascosti non validi (qual è il rischio)?
- quali sono le migliori pratiche quando i metodi pubblici possono utilizzare elaborazioni di basso livello e / o complesse?
Precisazioni:
- non è una domanda come . Python non ha un vero concetto di privacy e i metodi nascosti semplicemente non sono elencati, ma possono essere utilizzati quando si conosce il loro nome
- Non mi è mai stato insegnato regole e schemi di programmazione: le mie ultime lezioni sono degli anni '80 ... Ho principalmente imparato le lingue per tentativi, errori e riferimenti su Internet (Stack Exchange è il mio preferito da anni)