Test-Bibliothek: Unittest oder py.test?
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???
@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.
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.
Danke! Ich habe es gerade installiert und wühle mich dieser Tage mal durch die Dokumentation!
Mal eine Verständnisfrage zu pytest.
Mein Verzeichnis könnte wie folgt aussehen:
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???
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
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???
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.