Wenn Sie als Entwickler oder Programmierer Code schreiben, wird eines normalerweise übersehen: das Testen. Tests sind Teil der Entwicklung und Sie sollten Ihre Anwendungen gründlich testen, um sicherzustellen, dass sie die erforderliche Funktionalität erfüllen.
Da Testfälle vorab geschrieben sind, gibt es keinen wirklichen Grund mehr, manuelle Tests durchzuführen. Meistens, insbesondere bei großen Anwendungen, müssen Sie viele Phasen in Ihrer Software ausführen, um zu testen, ob eine Funktion funktioniert. Dies kann durch Tests vermieden werden. Stellen Sie sich vor, Sie müssten jedes Mal, wenn Sie Ihre Anwendung ausführen, eine bestimmte Eingabe verwenden. Beim Test wird dieser bei jedem Durchlauf automatisch eingetragen.
Das Erstellen von Testfällen vor der Entwicklung ist eine bewährte Vorgehensweise. Dies zwingt Sie dazu, über das System als Ganzes nachzudenken, bevor Sie mit der Entwicklung beginnen.
Während des Codierens kann sich die Implementierung der Funktion ändern, aber die Ausgabe bleibt gleich. Anstatt eine Funktion manuell zu testen, wenn sich ihre Implementierung ändert, können Sie einfach bestimmte Testfälle implementieren, die mehrere Testfälle gleichzeitig ausführen können.
Wir werden uns auf eine bestimmte Art von Tests konzentrieren: Unit-Tests. Diese spezielle Art von Test wird verwendet, um kleine Codeeinheiten wie Funktionen oder Klassen zu testen.
Um Unit-Tests zu erstellen, verwenden wir die Python-Standardbibliothek Unittest. Diese Methode zum Erstellen von Testfällen verwendet OOP (Object Oriented Programming), indem eine Klasse erstellt wird, die alle Testfälle enthält. Dadurch können wir alle Testfälle in der Klasse gleichzeitig ausführen.
Hinweis: Sie können jede IDE oder jeden Texteditor verwenden, mit dem Sie vertraut sind (die Standard-Python-IDE kann verwendet werden). Dazu werde ich die Verwendung von Visual Studio Code mit der Python-Erweiterung demonstrieren.
Wir werden zuerst unsere Unit-Test-Bibliothek importieren:
import unittest
Jetzt machen wir unsere Klassendeklaration:
class TestingClass(unittest.TestCase):
Hinweis (unittest.TestCase) ist Vererbung in Python. Stellen Sie der Klasse Funktionalität zur Verfügung.
Fügen Sie die erste Funktion in der Klasse hinzu:
self.assertEqual ist eine Methode, die von der zuvor geerbten Klasse (unittest.TestCase) bereitgestellt wird. Diese Methode testet, ob zwei Variablen den gleichen Wert haben.
Fügen Sie unseren Testläufer hinzu. Dies ist, was unseren Unit-Test zum Laufen bringt:
unittest.main()
So sollte der fertige Code aussehen:
Der obige Code zeigt den Test, ob 9 + 1 gleich 11 ist. Wenn Sie grundlegende Mathematikkenntnisse haben, sollten Sie wissen, dass 9+1 = 10. Daher wird dieser Testfall fehlschlagen.
Ausgabe:
Das hätten Sie erraten sollen. FAIL!
Die Lösung ist einfach. Ändern Sie den Code wie folgt:
test_var = 9 + 2
Ausgabe:
Für Tests außerhalb einer Funktion ist das vorherige Beispiel möglicherweise nicht realistisch. Ersetzen wir den test_var-Wert durch den Wert einer Funktion. Wir werden oben in der Datei eine Funktionsdeklaration hinzufügen.
Diese Funktion addiert zwei Zahlen. Ersetzen Sie 9 + 2 durch den Funktionsaufruf add(9,2) und führen Sie den Code aus.
Bisher haben wir nur einen Testfall implementiert. Jede Funktion/Methode in TestingClass (in diesem Fall sind beide gleich) stellt einen Testfall dar.
Fügen wir einen weiteren Testfall test_multiple_num_addition hinzu.
HINWEIS: Dem Namen aller erstellten Testfälle sollte das Wort „test“ vorangestellt werden, da der Testläufer es sonst nicht erkennt.
Ihr Code sollte so aussehen:
Run:
Dies wird offensichtlich fehlschlagen, da der Funktionsparameter nur zwei Parameter akzeptiert. Aber was ist, wenn wir wirklich mehr Zahlen hinzufügen möchten?
Dies kann durch eine Änderung an der Add-Funktion gelöst werden:
Beachten Sie das Sternchen (*) links neben dem Werteparameter. Dadurch können Sie mehrere Parameter eingeben und Werte als Tupel speichern.
Code vor der Ausführung:
Ausführung:
Ausführung erfolgreich!
Das Platzieren eines Sternchens vor der Variablen des Funktionsparameters wird als Nicht-Schlüsselwortparameter bezeichnet.
Der Versuch von Tests kann Ihrem Code zusätzliche Robustheit verleihen. Es kann auch die Art und Weise verändern, wie Sie entwickeln. Eine Testmentalität gewährleistet weniger Fehler in der Produktion und weniger sich wiederholende manuelle Tests während der Entwicklung.
*Originallink: https://medium.com/swlh/python-testing-a8156d022eef
Das obige ist der detaillierte Inhalt vonPython-Tests |. Unit-Tests in Python erstellen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!