PyUnit-Tutorial:Python Unit Testing Framework (mit Beispiel)
Was ist Unit-Testing?
Unit-Tests in Python werden durchgeführt, um Fehler früh in der Entwicklungsphase der Anwendung zu identifizieren, wenn Fehler weniger häufig auftreten und kostengünstiger zu beheben sind.
Ein Komponententest ist ein in Python entwickelter Test auf Skriptebene, um eine kleine „Einheit“ der Funktionalität zu überprüfen. Unit-Test ist ein objektorientiertes Framework, das auf Testvorrichtungen basiert.
Python Unit Testing Techniken
Python Unit Testing beinhaltet hauptsächlich das Testen eines bestimmten Moduls, ohne auf abhängigen Code zuzugreifen. Entwickler können Techniken wie Stubs und Mocks verwenden, um Code in „Einheiten“ zu unterteilen und Tests auf Einheitenebene für die einzelnen Teile durchzuführen.
- TDD für testgetriebene Entwicklung: Komponententests sollten zusammen mit Python durchgeführt werden, und dafür verwenden Entwickler die Test-Driven-Development-Methode. Bei der TDD-Methode entwerfen Sie zuerst Python-Einheitentests und schreiben erst dann den Code, der diese Funktion implementiert.
- Stubs und Mocks: Dies sind zwei Haupttechniken, die gefälschte Methoden simulieren, die getestet werden. Ein Stub wird verwendet, um einige Abhängigkeiten auszufüllen, die für die ordnungsgemäße Ausführung des Komponententests erforderlich sind. Ein Mock Auf der anderen Seite ist es ein gefälschtes Objekt, das die Tests ausführt, bei denen wir eine Aussage machen.
Die Absichten beider Methoden sind gleich, um das Testen aller Abhängigkeiten einer Klasse oder Funktion zu eliminieren.
Python Unit Testing Framework
Um den Unit-Testing-Prozess zu vereinfachen und die Qualität Ihres Projekts zu verbessern, wird das Python Unit Testing Framework empfohlen. Das Komponententest-Framework enthält
- PyUnit: PyUnit unterstützt Fixtures, Testfälle, Testsuiten und einen Testrunner für das automatisierte Testen des Codes. In PyUnit können Sie Testfälle in Suiten mit denselben Fixtures organisieren
- Nase: Die integrierten Plug-Ins von Nose helfen Ihnen bei der Ausgabeerfassung, Codeabdeckung, Dokumenttests usw. Die Nose-Syntax ist ziemlich einfacher und reduziert die Barrieren beim Schreiben von Tests. Es erweitert den Python-Unittest, um das Testen zu vereinfachen.
- Doctest: Das Doctest-Testskript wird in Docstring mit einer kleinen Funktion am Ende der Datei eingefügt. Mit Doctest können Sie Ihren Code testen, indem Sie die in der Dokumentation enthaltenen Beispiele ausführen und überprüfen, ob sie die erwarteten Ergebnisse zurückgegeben haben. Der Anwendungsfall von doctest ist weniger detailliert und erfasst keine Sonderfälle. Sie eignen sich als aussagekräftige Dokumentation des Hauptanwendungsfalls eines Moduls und seiner Komponenten.
Einheitentests mit PyUnit
Pyunit ist eine Python-Portierung von JUnit. Als Teil von Pyunit gibt es im Unittest-Modul fünf Schlüsselklassen.
- TestCase-Klasse :Die TestCase-Klasse enthält die Testroutinen und liefert Hooks, um jede Routine zu erstellen und danach aufzuräumen
- TestSuite-Klasse :Es dient als Sammlungscontainer und kann mehrere Testfallobjekte und mehrere Testsuites-Objekte besitzen
- TestLoader-Klasse :Diese Klasse lädt lokal oder aus einer externen Datei definierte Testfälle und Suiten. Es gibt ein Testsuite-Objekt aus, das diese Suiten und Fälle besitzt
- TextTestRunner-Klasse :Zum Ausführen der Tests bietet es eine Standardplattform zum Ausführen der Tests
- Die TestResults-Klasse :Es bietet einen Standardcontainer für die Testergebnisse
Entwurf eines Testfalls für Python-Tests mit PyUnit
Ein Komponententest stellt eine Basisklasse, einen Testfall, bereit, der zum Erstellen neuer Testfälle verwendet werden kann. Für das Entwerfen des Testfalls werden drei Arten von Methoden verwendet:
unittest.TestCase
setUp() teardown() skipTest(aMesg:string) fail(aMesg:string) id():string shortDescription():string
Im ersten Satz befinden sich die Pre- und Post-Test-Hooks. Die setup()-Methode beginnt vor jeder Testroutine, die teardown() nach der Routine.
Der zweite Methodensatz steuert die Testausführung. Beide Methoden verwenden eine Nachrichtenzeichenfolge als Eingabe, und beide brechen einen laufenden Test ab. Aber die Methode skiptest() bricht den aktuellen Test ab, während die Methode fail() ihn komplett fehlschlägt.
Die letzte oder dritte Methode hilft bei der Bestimmung des Tests. Die Methode id() gibt einen String zurück, der aus dem Namen des Testfallobjekts und der Testroutine besteht. Und die Methode shortDescription() gibt den docstr-Kommentar zu Beginn jeder Testroutine zurück.
Vorteile der Verwendung von Python-Einheitentests
- Es hilft Ihnen, Fehler früh im Entwicklungszyklus zu erkennen
- Es hilft Ihnen, bessere Programme zu schreiben
- Es lässt sich problemlos mit anderen Testmethoden und -tools synchronisieren
- Es wird viel weniger Fehler haben
- Es ist einfacher, in Zukunft mit sehr geringer Konsequenz zu ändern
Python
- C# Abstract Class Tutorial mit Beispiel:Was ist Abstraktion?
- Lernprogramm zum Testautomatisierungsframework für codierte UI
- Python String strip() Funktion mit BEISPIEL
- Python String count() mit BEISPIELE
- Python-Funktion round() mit BEISPIELE
- Python map() Funktion mit BEISPIELE
- Python Timeit() mit Beispielen
- Yield in Python Tutorial:Generator &Yield vs. Return Beispiel
- Python-Zähler in Sammlungen mit Beispiel
- Python List index() mit Beispiel