Test-Bibliothek: Unittest oder py.test?

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
pixewakb
User
Beiträge: 1411
Registriert: Sonntag 24. April 2011, 19:43

Hallo zusammen, mich würde mal interessieren, welches test-Framework ihr nutzt. Doctest finde ich nett, aber dürfte meinen Quellcode unnötig aufblähen. Ich tendiere aktuell zu Unittest oder zu py.test. Hat jemand eine Meinung/Erfahrungen, also eher Unittest oder ist py.test einfacher, besser...??? Im Netz finden sich vor allem Vorträge zu py.test auf Py.Cons. Das scheint angesagter???
BlackJack

@pixewakb: Doctest ist eigentlich keine Alternative zu Unit-Tests sondern unabhängig von Unit-Tests zu sehen. Mit Doctests testet man die Beispiele in der Dokumentation. Umgekehrt sollten die Beispiele in der Dokumentation der Dokumentation dienen, also nicht jeden Winkel und jeden möglichen Programmverlauf abdecken. So viel ”Beispielcode” will keiner in der Dokumentation lesen. Natürlich kann man mit Doctest auch ausserhalb von Dokumentation testen. Und den Quelltext bläht das ganze auch nur auf wenn man es in den Quelltext schreibt. Man kann Doctests in beliebige Textdokumente schreiben die getrennt vom Quelltext gespeichert werden.

Ich verwende py.test. Mir gefällt die Einfachheit mit dem ``assert``, der Testrunner, und Doctests kann man damit auch gleich erfassen und ausführen lassen.
Benutzeravatar
pixewakb
User
Beiträge: 1411
Registriert: Sonntag 24. April 2011, 19:43

Danke! Ich habe es gerade installiert und wühle mich dieser Tage mal durch die Dokumentation!
Benutzeravatar
pixewakb
User
Beiträge: 1411
Registriert: Sonntag 24. April 2011, 19:43

Mal eine Verständnisfrage zu pytest.

Mein Verzeichnis könnte wie folgt aussehen:

Code: Alles auswählen

docs [Ordner]
+-> Sphinx-Sachen
package [Ordner]
+-> Einzelne Module
test [Ordner]
+-> die py.test-Dateien
programm.py
setup.py
Da meine Test-Dateien ja wohl nicht im Hauptverzeichnis liegen, sehe ich noch nicht, wie ich Skripte aus dem package-Ordner oder aus dem Hauptverzeichnis, hier dann programm.py, ohne Installation (!) in den py.test-Dateien importieren kann, um sie so zu testen. Im Netz habe ich die Lösung mit einem virtuellen Verzeichnis gesehen, wo dann alle Skripte installiert wurden, um sie testen zu können.

Mir erscheint das viel Aufwand, weil ich viele Module einsetze, die nicht in der Standardbibliothek enthalten sind. Bis ich das dann für jedes (virtuelle) Verzeichnis verfügbar gemacht habe, dürfte immer dauern; ich rede noch nicht mal davon die Sachen dann aktuell zu halten. Ich müsste das virtuelle Verzeichnis dann für jeden Test starten, wenn ich das richtig sehe.

Gibt es zu einem virtuellen Verzeichnis und einer Installation eine Alternative???
BlackJack

Package muss ja nur im Modulpfad sein. Andererseits kann man Bibliotheken an denen man gerade arbeitet auch so installieren das sie in dem aktuellen Verzeichnis bleiben, man sie also weiterhin einfach bearbeiten kann. Schau Dir mal `pip`\s ``-e``/``--editable`` Option an.
Antworten