Co jakiś czas sprawdzam temat umieszczania testów i za każdym razem większość zaleca osobną strukturę folderów obok kodu biblioteki, ale stwierdzam, że za każdym razem argumenty są takie same i nie są tak przekonujące. Kładę moje moduły testowe gdzieś obok modułów podstawowych.
Głównym powodem tego jest: refaktoryzacja .
Kiedy się poruszam, chcę, aby moduły testowe poruszały się z kodem; łatwo jest przegrać testy, jeśli są w osobnym drzewie. Bądźmy szczerzy, prędzej czy później skończysz z zupełnie inną strukturą folderów, taką jak django , flask i wiele innych. Co jest w porządku, jeśli cię to nie obchodzi.
Główne pytanie, które powinieneś sobie zadać, brzmi:
Piszę:
- a) biblioteka wielokrotnego użytku lub
- b) budowanie projektu niż wiązanie razem częściowo rozdzielonych modułów?
Jeśli:
Osobny folder i dodatkowy wysiłek w celu utrzymania jego struktury mogą być bardziej odpowiednie. Nikt nie będzie narzekał na wdrożenie testów w produkcji .
Ale równie łatwo jest wykluczyć testy z dystrybucji, gdy są mieszane z folderami podstawowymi; umieść to w setup.py :
find_packages("src", exclude=["*.tests", "*.tests.*", "tests.*", "tests"])
Jeśli b:
Możesz życzyć - jak każdy z nas - że piszesz biblioteki wielokrotnego użytku, ale przez większość czasu ich życie jest związane z życiem projektu. Priorytetem powinna być możliwość łatwego utrzymania projektu.
Następnie, jeśli wykonałeś dobrą robotę, a twój moduł dobrze pasuje do innego projektu, prawdopodobnie zostanie skopiowany - nie rozwidlony lub utworzony w osobnej bibliotece - do tego nowego projektu i przeniesie testy, które leżą obok niego w tej samej strukturze folderów jest łatwe w porównaniu z testowaniem wyników w bałaganie, którym stał się osobny folder testowy. (Możesz argumentować, że nie powinien to być bałagan, ale bądźmy realistami).
Tak więc wybór należy do ciebie, ale twierdzę, że przy pomieszanych testach osiągasz te same rzeczy, co w osobnym folderze, ale przy mniejszym wysiłku w utrzymaniu porządku.