Czasami prywatne funkcje modułu lub klasy są po prostu jeszcze do wyodrębnienia wewnętrznymi jednostkami funkcjonalności, które mogą zasługiwać na własne testy. Dlaczego więc ich nie przetestować? My będziemy pisać testy do nich później, jeśli / kiedy są one wyodrębnione. Dlaczego więc nie napisać testów teraz, gdy są one nadal częścią tego samego pliku?
Aby zademonstrować:
Najpierw napisałem module_a
. Teraz chcę na to napisać testy. Chciałbym przetestować funkcję „prywatną” _private_func
. Nie rozumiem, dlaczego nie napisałbym dla niego testu, jeśli później mógłbym zrefaktoryzować go do własnego modułu wewnętrznego, a następnie napisać dla niego testy.
Załóżmy, że mam moduł z następującymi funkcjami (może to być również klasa):
def public_func(a):
b = _do_stuff(a)
return _do_more_stuff(b)
_do_stuff
i _do_more_stuff
są „prywatnymi” funkcjami modułu.
Rozumiem pomysł, że powinniśmy testować tylko interfejs publiczny, a nie szczegóły implementacji. Oto jednak:
_do_stuff
i _do_more_stuff
zawierają większość funkcjonalności modułu. Każdy z nich może być funkcją publiczną innego, „wewnętrznego” modułu. Ale nie są one jeszcze rozwinięte i wystarczająco duże, aby można je było wyodrębnić do osobnych plików.
Testowanie tych funkcji wydaje się słuszne, ponieważ są ważnymi jednostkami funkcjonalności. Gdyby były one w różnych modułach jako funkcje publiczne, przetestowalibyśmy je. Dlaczego więc nie przetestować ich, gdy nie są jeszcze (lub nigdy) wyodrębnione do innego pliku?