Kontekst:
Obecnie pracuję nad małym projektem w Pythonie. Zazwyczaj tworzę swoje klasy za pomocą kilku udokumentowanych metod publicznych, ale głównie zajmuję się koncepcjami wysokiego poziomu (co użytkownik klasy powinien wiedzieć i stosować) oraz szeregiem ukrytych (zaczynających się od podkreślenia) metod, które są odpowiedzialne za przetwarzanie złożone lub niskiego poziomu.
Wiem, że testy są niezbędne, aby zapewnić zaufanie do kodu i upewnić się, że żadna późniejsza modyfikacja nie złamała poprzedniego zachowania.
Problem:
Aby zbudować publiczne metody wyższego poziomu na zaufanej bazie, ogólnie testuję metody prywatne. Łatwiej jest mi ustalić, czy modyfikacja kodu wprowadziła regresje i gdzie. Oznacza to, że te testy wewnętrzne mogą naruszyć niewielkie zmiany i będą musiały zostać naprawione / wymienione
Ale wiem też, że prywatna metoda testowania jednostkowego jest co najmniej sporną koncepcją lub częściej uważaną za złą praktykę. Powodem jest to, że należy przetestować tylko zachowanie publiczne ( zob. )
Pytanie:
Dbam o przestrzeganie najlepszych praktyk i chciałbym zrozumieć:
- dlaczego stosowanie testów jednostkowych metod prywatnych / ukrytych jest złe (jakie jest ryzyko)?
- jakie są najlepsze praktyki, gdy metody publiczne mogą korzystać z niskiego poziomu i / lub złożonego przetwarzania?
Precyzja:
- Nie jest to jak pytanie. Python nie ma prawdziwej koncepcji prywatności, a ukrytych metod po prostu nie ma na liście, ale można ich użyć, gdy znasz ich nazwę
- Nigdy nie uczono mnie zasad i schematów programowania: moje ostatnie zajęcia pochodzą z lat 80-tych ... Nauczyłem się języków głównie metodą prób i niepowodzeń oraz referencji w Internecie (od wielu lat mój ulubiony jest Stack Exchange)