Hin und wieder überprüfe ich das Thema der Testplatzierung, und jedes Mal empfiehlt die Mehrheit eine separate Ordnerstruktur neben dem Bibliothekscode, aber ich finde, dass die Argumente jedes Mal gleich und nicht so überzeugend sind. Am Ende platziere ich meine Testmodule irgendwo neben den Kernmodulen.
Der Hauptgrund dafür ist: Refactoring .
Wenn ich Dinge bewege, möchte ich, dass sich Testmodule mit dem Code bewegen. Es ist leicht, Tests zu verlieren, wenn sie sich in einem separaten Baum befinden. Seien wir ehrlich, früher oder später haben Sie eine völlig andere Ordnerstruktur wie Django , Kolben und viele andere. Was in Ordnung ist, wenn es dich nicht interessiert.
Die Hauptfrage, die Sie sich stellen sollten, lautet:
Schreibe ich:
- a) wiederverwendbare Bibliothek oder
- b) ein Projekt aufbauen, indem einige halbgetrennte Module gebündelt werden?
Wenn ein:
Ein separater Ordner und der zusätzliche Aufwand zur Aufrechterhaltung seiner Struktur sind möglicherweise besser geeignet. Niemand wird sich darüber beschweren, dass Ihre Tests für die Produktion bereitgestellt werden .
Es ist aber genauso einfach, Tests von der Verteilung auszuschließen, wenn sie mit den Kernordnern gemischt werden. füge dies in die setup.py ein :
find_packages("src", exclude=["*.tests", "*.tests.*", "tests.*", "tests"])
Wenn b:
Sie möchten vielleicht - wie jeder von uns -, dass Sie wiederverwendbare Bibliotheken schreiben, aber die meiste Zeit ist ihr Leben an das Leben des Projekts gebunden. Die Fähigkeit, Ihr Projekt einfach zu warten, sollte Priorität haben.
Wenn Sie dann gute Arbeit geleistet haben und Ihr Modul für ein anderes Projekt gut geeignet ist, wird es wahrscheinlich in dieses neue Projekt kopiert - nicht gegabelt oder in eine separate Bibliothek verschoben - und Tests verschoben, die daneben in derselben Ordnerstruktur liegen ist einfach im Vergleich zum Auffischen von Tests in einem Durcheinander, zu dem ein separater Testordner geworden war. (Sie können argumentieren, dass es in erster Linie kein Chaos sein sollte, aber lassen Sie uns hier realistisch sein).
Sie haben also immer noch die Wahl, aber ich würde argumentieren, dass Sie mit gemischten Tests dieselben Ergebnisse erzielen wie mit einem separaten Ordner, jedoch mit weniger Aufwand, um die Dinge sauber zu halten.