2012-03-25 12 views
6

Gibt es eine bestimmte Verzeichnisstruktur für TDD in Python?Python TDD Verzeichnisstruktur

Tutorials sprechen über den Inhalt der Tests, aber nicht, wo sie

Von Stochern Python Koans zu platzieren, vermuten seine etwas wie:

/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" 

Bin ich das richtig tun ? Gibt es eine gute Anleitung, die die Verzeichnishierarchie für TDD lehrt? Ich habe gehört, dass das Mischen von Dateien aus Code und Tests schlecht ist.

Referenzen:

+0

Für Anfänger: Wenn Sie die Struktur wie oben gezeigt haben, dann müssten Sie /projects/classes/codey.py mit /project/tests/testy.py "Codey aus Klassen importieren" in testy.py schreiben dass es weiß, wo es zu suchen ist. Beim Import sucht Python. Wenn Sie also /cat/sat/on/sometest.py und /cat/trolled/dog/somecode.py hätten, würde "import somecode von cat.trolled.dog" in den Test gehen. – xxjjnn

Antwort

4

Basierend auf Ihren proje ct, was Art können Sie

  • Seperate Implementierungscode von Testcode
  • neue Tests erstellen leicht
  • Run alle Tests in einem Arbeitsgang (z für Regressionstests)

Die Python-Koans/etc sind nur Richtlinien. Am Ende möchten Sie DRY mit Ihren Unit Tests aufrecht erhalten und einfach, wartbar und intuitiv testen können. Am Ende entscheiden Sie selbst über Ihre Ordnerstruktur.

Ich habe das Gefühl, dass Sie sich zu sehr auf die Erfüllung von Konventionen konzentrieren, anstatt Ihr Projekt zu erfüllen.

+1

Das ist cool ist es egal =) Denke außerhalb der ... hey, was hast du mit der Box Python gemacht? – xxjjnn

+0

Es ist immer noch eine gültige Frage, und es wird schließlich in jedem prog Sprachforum gefragt. Ref http://stackoverflow.com/questions/193161/what-is-the-best-project-structure-for-a-python-application für weitere Notizen. –

1

Es gibt zwei grundlegende Optionen: in einem Top-Level "Test" (oder "Tests") Verzeichnis oder in "Test" Verzeichnissen in Ihrem Paket auf jeder Ebene. Ersteres hat den Vorteil, dass sowohl Komponententests als auch andere Tests problemlos durchgeführt werden können. Letzteres hat den Vorteil, dass es leicht ist, Ihre Tests gegen die installierte Version des Codes auszuführen, und wird von this blog post empfohlen, das die grundlegende Struktur beschreibt, die für Python-Projekte gut funktioniert.

Am Ende des Tages ist es wichtig, dass sie leicht zu finden und zu betreiben sind.