Manchmal sind private Funktionen eines Moduls oder einer Klasse einfach noch zu extrahierende interne Funktionseinheiten, die möglicherweise ihre eigenen Tests verdienen. Warum also nicht testen? Wir werden später Tests für sie schreiben, wenn sie extrahiert werden. Warum also nicht jetzt die Tests schreiben, wenn sie noch Teil derselben Datei sind?
Demonstrieren:
Zuerst habe ich geschrieben module_a. Jetzt möchte ich Tests dafür schreiben. Ich möchte die 'private' Funktion testen _private_func. Ich verstehe nicht, warum ich keinen Test dafür schreiben würde, wenn ich ihn später ohnehin in ein eigenes internes Modul umgestalten und dann Tests dafür schreiben könnte.
Angenommen, ich habe ein Modul mit den folgenden Funktionen (es könnte auch eine Klasse sein):
def public_func(a):
b = _do_stuff(a)
return _do_more_stuff(b)
_do_stuffund _do_more_stuffsind "private" Funktionen des Moduls.
Ich verstehe die Idee, dass wir nur die öffentliche Schnittstelle testen sollten, nicht die Implementierungsdetails. Hier ist jedoch die Sache:
_do_stuffund _do_more_stuffenthalten den größten Teil der Funktionalität des Moduls. Jeder von ihnen könnte eine öffentliche Funktion eines anderen "internen" Moduls sein. Sie sind jedoch noch nicht weiterentwickelt und groß genug, um in separate Dateien extrahiert zu werden.
Das Testen dieser Funktionen fühlt sich also richtig an, da sie wichtige Funktionseinheiten sind. Wenn sie als öffentliche Funktionen in verschiedenen Modulen wären, hätten wir sie getestet. Warum testen Sie sie nicht, wenn sie noch nicht (oder noch nie) in eine andere Datei extrahiert wurden?
