Ich habe mein erstes richtiges Projekt in Python abgeschlossen und jetzt ist es meine Aufgabe, Tests dafür zu schreiben.
Da ich zum ersten Mal ein Projekt durchgeführt habe, schreibe ich zum ersten Mal Tests dafür.
Die Frage ist, wie fange ich an? Ich habe absolut keine Ahnung. Kann mich jemand auf eine Dokumentation / ein Tutorial / einen Link / ein Buch verweisen, mit denen ich mit dem Schreiben von Tests beginnen kann (und ich denke, insbesondere Unit-Tests)?
Ratschläge zu diesem Thema sind willkommen.
python
unit-testing
testing
user225312
quelle
quelle
Antworten:
Wenn Sie mit der Verwendung von Unittests noch nicht vertraut sind, ist der einfachste Lernansatz oft der beste. Auf dieser Grundlage zusammen empfehle ich
py.test
eher als dasunittest
Standardmodul .Betrachten Sie diese beiden Beispiele, die dasselbe tun:
Beispiel 1 (unittest):
Beispiel 2 (Pytest):
Unter der Annahme, dass beide Dateien benannt sind
test_unittesting.py
, wie führen wir die Tests durch?Beispiel 1 (unittest):
Beispiel 2 (Pytest):
quelle
unit-test
immer noch in der Standardbibliothek enthält, wennpy.test
undnose
bietet die gleiche Funktionalität mit vielen einfacheren Schnittstelle? Ist es nur die Abwärtskompatibilität zur Verfügung zu stellen, oder hatunittest
einige Vorteile hat , dasspy.test
undnosetest
bietet nicht?unittest
ist immer noch gut genug. Es ist Standard, was bedeutet, dass es garantiert gut funktioniert. Schließlich muss jeder, der Ihren Code verwendet, keine zusätzlichen Pakete installieren.Das kostenlose Python-Buch Dive Into Python enthält ein Kapitel über Unit-Tests , das Sie möglicherweise nützlich finden.
Wenn Sie modernen Praktiken folgen, sollten Sie die Tests wahrscheinlich schreiben, während Sie Ihr Projekt schreiben, und nicht warten, bis Ihr Projekt fast abgeschlossen ist.
Etwas spät, aber jetzt weißt du es für das nächste Mal. :) :)
quelle
Meiner Meinung nach gibt es drei großartige Python-Test-Frameworks, die sich gut testen lassen.
unittest - Modul wird standardmäßig mit allen Python-Distributionen
geliefert - kann unittest-Tests ausführen und verfügt über weniger Boilerplate.
pytest - führt auch unittest Tests durch, hat weniger Boilerplate, bessere Berichterstattung, viele coole Zusatzfunktionen
Um einen guten Vergleich all dieser zu erhalten, lesen Sie die jeweiligen Einführungen unter http://pythontesting.net/start-here .
Es gibt auch erweiterte Artikel über Spielpaarungen und mehr.
quelle
Die Dokumente für unittest wären ein guter Anfang.
Es ist jetzt auch etwas spät, aber in Zukunft sollten Sie vor oder während des Projekts selbst Unit-Tests schreiben. Auf diese Weise können Sie sie zum Testen verwenden, und (theoretisch) können Sie sie als Regressionstests verwenden, um zu überprüfen, ob Ihre Codeänderungen keinen vorhandenen Code beschädigt haben. Dies würde Ihnen den vollen Vorteil geben, Testfälle zu schreiben :)
quelle
unittest
. Sobald ich den Dreh raus habe, werde ich es mehr für die Entwicklung verwenden und die Anzahl der Testfälle für jede Einheit erhöhen.unittest wird mit der Standardbibliothek geliefert , aber ich würde Ihnen Nosetests empfehlen .
"Die Nase erstreckt sich am wenigsten, um das Testen zu erleichtern. "
Ich würde Ihnen auch Pylint empfehlen
" analysiert Python-Quellcode auf Fehler und Anzeichen von schlechter Qualität. "
quelle
Wie andere bereits geantwortet haben, ist es spät, Unit-Tests zu schreiben, aber nicht zu spät. Die Frage ist, ob Ihr Code testbar ist oder nicht. In der Tat ist es nicht einfach, vorhandenen Code zu testen, es gibt sogar ein Buch darüber: Effektiv mit Legacy-Code arbeiten (siehe wichtige Punkte oder PDF-Vorläufer ).
Jetzt die Unit-Tests zu schreiben oder nicht, ist Ihr Anruf. Sie müssen sich nur bewusst sein, dass dies eine mühsame Aufgabe sein kann. Sie können dies in Angriff nehmen, um Unit-Tests zu lernen, oder zuerst in Betracht ziehen, Akzeptanztests (End-to-End-Tests) zu schreiben und Unit-Tests zu schreiben, wenn Sie den Code ändern oder dem Projekt neue Funktionen hinzufügen.
quelle
nosetests ist eine brillante Lösung für Unit-Tests in Python. Es unterstützt sowohl unittest-basierte Testfälle als auch Doctests und erleichtert Ihnen den Einstieg mit einer einfachen Konfigurationsdatei.
quelle
nose
undnose2
befinden sich im Wartungsmodus. Es ist besser zu beginnen,py.test
da es viel mehr Unterstützung hat