UnitTest Framework - Framework
'unittest' unterstützt die Testautomatisierung, die gemeinsame Nutzung von Setup- und Shutdown-Code für Tests, die Aggregation von Tests zu Sammlungen und die Unabhängigkeit der Tests vom Berichtsrahmen.
Das unittest-Modul bietet Klassen, die es einfach machen, diese Eigenschaften für eine Reihe von Tests zu unterstützen.
Um dies zu erreichen, unterstützt unittest die folgenden wichtigen Konzepte:
test fixture- Dies stellt die Vorbereitung dar, die erforderlich ist, um einen oder mehrere Tests durchzuführen, sowie alle zugehörigen Bereinigungsaktionen. Dies kann beispielsweise das Erstellen temporärer oder Proxy-Datenbanken, Verzeichnisse oder das Starten eines Serverprozesses umfassen.
test case- Dies ist die kleinste Testeinheit. Dies prüft auf eine bestimmte Antwort auf einen bestimmten Satz von Eingaben. unittest bietet eine Basisklasse,TestCase, mit denen neue Testfälle erstellt werden können.
test suite- Dies ist eine Sammlung von Testfällen, Testsuiten oder beidem. Dies wird verwendet, um Tests zu aggregieren, die zusammen ausgeführt werden sollen. Testsuiten werden von der TestSuite-Klasse implementiert.
test runner- Dies ist eine Komponente, die die Ausführung von Tests koordiniert und dem Benutzer das Ergebnis liefert. Der Läufer kann eine grafische Oberfläche oder eine Textoberfläche verwenden oder einen speziellen Wert zurückgeben, um die Ergebnisse der Ausführung der Tests anzuzeigen.
Erstellen eines Komponententests
Die folgenden Schritte sind erforderlich, um einen einfachen Komponententest zu schreiben:
Step 1 - Importieren Sie das unittest Modul in Ihr Programm.
Step 2- Definieren Sie eine zu testende Funktion. Im folgenden Beispiel soll die Funktion add () getestet werden.
Step 3 - Erstellen Sie einen Testfall, indem Sie unittest.TestCase unterklassifizieren.
Step 4- Definieren Sie einen Test als Methode innerhalb der Klasse. Der Name der Methode muss mit 'test' beginnen.
Step 5- Jeder Test ruft die Assert-Funktion der TestCase-Klasse auf. Es gibt viele Arten von Behauptungen. Das folgende Beispiel ruft die Funktion assertEquals () auf.
Step 6 - Die Funktion assertEquals () vergleicht das Ergebnis der Funktion add () mit dem Argument arg2 und löst assertionError aus, wenn der Vergleich fehlschlägt.
Step 7 - Rufen Sie abschließend die main () -Methode aus dem unittest-Modul auf.
import unittest
def add(x,y):
return x + y
class SimpleTest(unittest.TestCase):
def testadd1(self):
self.assertEquals(add(4,5),9)
if __name__ == '__main__':
unittest.main()
Step 8 - Führen Sie das obige Skript über die Befehlszeile aus.
C:\Python27>python SimpleTest.py
.
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
Step 9 - Die folgenden drei könnten die möglichen Ergebnisse eines Tests sein -
Sr.Nr. | Nachricht & Beschreibung |
---|---|
1 | OK Der Test besteht. 'A' wird auf der Konsole angezeigt. |
2 | FAIL Der Test besteht nicht und löst eine AssertionError-Ausnahme aus. 'F' wird auf der Konsole angezeigt. |
3 | ERROR Der Test löst eine andere Ausnahme als AssertionError aus. 'E' wird auf der Konsole angezeigt. |
Diese Ergebnisse werden auf der Konsole durch '.', 'F' bzw. 'E' angezeigt.
Befehlszeilenschnittstelle
Das unittest-Modul kann über die Befehlszeile verwendet werden, um einzelne oder mehrere Tests auszuführen.
python -m unittest test1
python -m unittest test_module.TestClass
python -m unittest test_module.TestClass.test_method
unittest unterstützt die folgenden Befehlszeilenoptionen. Verwenden Sie den folgenden Befehl, um eine Liste aller Befehlszeilenoptionen anzuzeigen:
Python –m unittest -h
Sr.Nr. | Option & Beschreibung |
---|---|
1 | -h, --help Diese Nachricht anzeigen |
2 | v, --verbose Ausführliche Ausgabe |
3 | -q, --quiet Minimale Leistung |
4 | -f, --failfast Stoppen Sie beim ersten Ausfall |
5 | -c, --catch Catch Control-C und Ergebnisse anzeigen |
6 | -b, --buffer Puffer stdout und stderr während der Testläufe |