Wohin mit den tests?!?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Wohin mit den tests? Wie benennen und wohin legen?

Bin gerade wieder über ein Projekt gestolpert welches so ausgebaut ist:

Code: Alles auswählen

/project_foo/
/tests/
/setup.py
Wenn die /tests/ in setup.py eingebunden werden, landet das /tests/ Verzeichnis in .../site-packages/tests/
Ist natürlich dämlich, wenn man mehr als ein Projekt installiert, welches einen /tests/ ordner hat :?

Sehe zwei möglichkeiten:

Code: Alles auswählen

/project_foo/
/project_foo_tests/
/setup.py
oder:

Code: Alles auswählen

/project_foo/
/project_foo/tests/
/setup.py
welches ist der quasi Standard?!?
Spontan würde ich zur letzten Variante tendieren.

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Die Tests liefert man natürlich nicht als Package mit aus, insofern ergeben sich diese Probleme alle auch nicht.
BlackJack

Ich weiss nicht ob man es als Standard bezeichnen kann, aber vom „Python Packaging User Guide“ gibt es ein Beispielprojekt: https://github.com/pypa/sampleproject

Ich persönlich habe aber auch schon tests als Unterpackage vom Projekt gemacht, was den Vorteil hat, dass man einfacher die Tests ausführen (lassen) kann, wenn etwas nicht funktioniert. Das kann nützlich sein wenn das jemand anders installiert hat und es in einer Umgebung und mit Abhängigkeiten läuft, die man nicht selbst installiert hat oder mit denen man das selbst noch nicht getestet hat.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

DasIch hat geschrieben:Die Tests liefert man natürlich nicht als Package mit aus, insofern ergeben sich diese Probleme alle auch nicht.
Das kommt aber dennoch vor.

Ich weiß garnicht was passiert, wenn mehrere packages Dateien nach .../site-packages/tests/ packen wollen. Merkt pip das eigentlich oder werden die blind überschieben?!?

Ich sehe halt auch ein vorteil darin, das man tests immer ausführen kann, egal. wie installiert wurde. Aber halt nicht, in dem sie nach .../site-packages/tests/ gespeichert werden.

Das https://github.com/pypa/sampleproject/ speichert sie auch unter /tests/ und macht: packages=find_packages(exclude=['contrib', 'docs', 'tests']),
Somit kann man die Tests nur dann ausführen, wenn man das Paket z.B. per pip install -e installiert hat.

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

@jens: wenn man die Tests mitinstallieren möchte, würde man sie unter den Package-Pfad legen: /project_foo/tests
numpy hat z.B. sogar die Tests auf jedes Unterpaket aufgeteilt und somit in jedem Unterverzeichnis ein ../tests-Verzeichnis.
Antworten