2012-03-25 34 views
6

Czy istnieje konkretna struktura katalogów używana w TDD w Pythonie?Struktura katalogów TDD w Pythonie

Poradniki rozmawiać o treści testów, ale nie tam, gdzie je umieścić

Od wywiercenie Pythona koanami, podejrzewam jej coś takiego:

/project/main_program.py   # This has main method, starts program 
/project/classes/<many classes>.py 
/project/main_test.py   # This simply directs unittest onto tests, can use parameters fed to it to customise tests for environment 
/project/tests/<many tests>.py 

# to run tests, type "python -m unittest main_test.py" (into a terminal) 
# to run program, type "python main_program.py" 

robię to prawo ? Czy istnieje dobry przewodnik, który uczy hierarchii katalogów dla TDD? Słyszałem, że mieszanie plików kodu i testów jest złe.

Referencje:

+0

Dla początkujących: Jeśli masz strukturę pokazaną powyżej, to do przetestowania /project/classes/codey.py z /project/tests/testy.py powinieneś "zaimportować kodey z klas" napisaną w testów.py więc że wie, gdzie szukać. Podczas importowania python przeszukuje. Więc jeśli masz /cat/sat/on/sometest.py i /cat/trolled/dog/somecode.py, wtedy "importować somecode z cat.trolled.dog" przejdzie do testu. – xxjjnn

Odpowiedz

4

oparciu o swojej PROJE ct, Cokolwiek styl pozwala na

  • Seperate kod realizacji od testowania kodu
  • Tworzenie nowych testów łatwo
  • uruchomić wszystkie testy w jednej operacji (np do testowania regresji)

Python koans/etc to tylko wskazówki. Na koniec chcesz podtrzymać DRY dzięki swoim testom i być w stanie przetestować łatwo, utrzymywalnie i intuicyjnie. Ostatecznie to ty decydujesz o strukturze folderów.

Czuję, że skupiasz się zbytnio na zaspokajaniu konwencji zamiast na spełnianiu swojego projektu.

+1

Fajnie, to nie ma znaczenia =) Pomyśl o tym poza ... hej, co zrobiłeś z pudełkiem Python? – xxjjnn

+0

To wciąż poprawne pytanie, które ostatecznie pojawia się na każdym forum z językiem prog. Ref http://stackoverflow.com/questions/193161/what-is-the-best- project-structure-for-a-python-application na więcej notatek. –

1

Dostępne są dwie podstawowe opcje: w katalogu najwyższego poziomu "test" (lub "testy") lub w katalogach "testowych" w pakiecie na każdym poziomie. Ten pierwszy ma tę zaletę, że łatwo jest konsekwentnie realizować zarówno testy jednostkowe, jak i inne. Ta ostatnia ma tę zaletę, że ułatwia uruchamianie testów względem zainstalowanej wersji kodu i jest zalecana przez this blog post, która opisuje podstawową strukturę, która działa dobrze w przypadku projektów Python.

Koniec końców, ważne jest, aby były łatwe do znalezienia i uruchomienia.