Einführung in Unittest in Python: Strukturierte Unit-Tests Schreiben
Unittest ist Teil der Standardbibliothek von Python, was bedeutet, dass keine zusätzlichen Installationen erforderlich sind, um zu beginnen. Es basiert auf dem Konzept von Testfällen, die Python-Klassen sind, die von der TestCase-Klasse des Frameworks abgeleitet werden. Unittest ist ein ausgezeichnetes Werkzeug für alle, die mit dem Testen beginnen, da es Tests so strukturiert, dass die Prinzipien der objektorientierten Programmierung widergespiegelt werden.
Die Struktur von Unittest
In Unittest ist jeder Test eine Methode innerhalb einer Unterklasse von unittest.TestCase. Dieses Design fördert die Gruppierung verwandter Tests, was dazu beiträgt, den Testcode logisch zu organisieren und die Lesbarkeit zu erhöhen.
Schreiben eines Tests mit Unittest
Es soll eine einfache Funktion getestet werden, die den Durchschnitt von zwei Zahlen berechnet. Hier ist die Funktion, die getestet werden soll:
def calculate_average(num1, num2):
return (num1 + num2) / 2
Erstellen eines Testfalls
Um einen Testfall zu erstellen, wird eine Klasse definiert, die von unittest.TestCase erbt. Innerhalb dieser Klasse können Methoden definiert werden, um die Funktion calculate_average zu testen.
import unittest
class TestCalculateAverage(unittest.TestCase):
def test_integers(self):
self.assertEqual(calculate_average(10, 20), 15)
def test_floats(self):
self.assertAlmostEqual(calculate_average(10.5, 20.5), 15.5)
- Zuerst wird das Unittest-Modul mit
importgeladen, das Teil der Standardbibliothek von Python ist; class TestCalculateAverage(unittest.TestCase)erstellt einen neuen Testfall. Er erbt vonunittest.TestCase, das die Testfunktionalität bereitstellt;- Jede Methode in der Klasse sollte mit
test_beginnen; - Die Methoden verwenden spezifische assert-Anweisungen, um zu überprüfen, ob eine Bedingung erfüllt ist.
Beispiel für eine erfolgreiche Testausgabe
Wenn alle Tests im Unittest erfolgreich sind, ist die Ausgabe übersichtlich und zeigt an, dass alle Tests ohne Fehler ausgeführt wurden. Hier ist ein Beispiel für einen erfolgreichen Testlauf:
...
----------------------------------------------------------------------
Ran 3 tests in 0.002s
OK
Beispiel für eine fehlgeschlagene Testausgabe
Wenn ein oder mehrere Tests fehlschlagen, liefert die Ausgabe Details zu den Fehlern, einschließlich der Information, welche Tests fehlgeschlagen sind und warum. Hier ist ein Beispiel, wie eine fehlgeschlagene Testausgabe aussehen kann:
..F
----------------------------------------------------------------------
Ran 3 tests in 0.003s
FAILED (failures=1)
======================================================================
FAIL: test_average_floats (test_module.TestCalculateAverage)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/path/to/test_module.py", line 10, in test_average_floats
self.assertAlmostEqual(calculate_average(10.0, 20.0), 15.1)
AssertionError: 15.0 != 15.1 within 7 places (0.10000000000000142 difference)
----------------------------------------------------------------------
Diese Ausgabe enthält:
..Fzeigt an, dass drei Tests ausgeführt wurden; die ersten beiden bestanden (..), der dritte schlug fehl (F);FAILED (failures=1)zeigt, dass es einen Fehler unter den ausgeführten Tests gab;- Der detaillierte Fehlerbericht beginnt mit der Testkennung (
test_average_floats) und der Klasse (TestCalculateAverage). Es wird ein Traceback zur fehlerverursachenden Zeile im Testcode angezeigt und die Art des Assertion-Fehlers erläutert, einschließlich des erwarteten Werts, des tatsächlichen Werts und der zulässigen Fehlertoleranz.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Can you explain what the different assert methods in Unittest do?
How do I run these tests from the command line?
What should I do if a test fails?
Awesome!
Completion rate improved to 3.13
Einführung in Unittest in Python: Strukturierte Unit-Tests Schreiben
Swipe um das Menü anzuzeigen
Unittest ist Teil der Standardbibliothek von Python, was bedeutet, dass keine zusätzlichen Installationen erforderlich sind, um zu beginnen. Es basiert auf dem Konzept von Testfällen, die Python-Klassen sind, die von der TestCase-Klasse des Frameworks abgeleitet werden. Unittest ist ein ausgezeichnetes Werkzeug für alle, die mit dem Testen beginnen, da es Tests so strukturiert, dass die Prinzipien der objektorientierten Programmierung widergespiegelt werden.
Die Struktur von Unittest
In Unittest ist jeder Test eine Methode innerhalb einer Unterklasse von unittest.TestCase. Dieses Design fördert die Gruppierung verwandter Tests, was dazu beiträgt, den Testcode logisch zu organisieren und die Lesbarkeit zu erhöhen.
Schreiben eines Tests mit Unittest
Es soll eine einfache Funktion getestet werden, die den Durchschnitt von zwei Zahlen berechnet. Hier ist die Funktion, die getestet werden soll:
def calculate_average(num1, num2):
return (num1 + num2) / 2
Erstellen eines Testfalls
Um einen Testfall zu erstellen, wird eine Klasse definiert, die von unittest.TestCase erbt. Innerhalb dieser Klasse können Methoden definiert werden, um die Funktion calculate_average zu testen.
import unittest
class TestCalculateAverage(unittest.TestCase):
def test_integers(self):
self.assertEqual(calculate_average(10, 20), 15)
def test_floats(self):
self.assertAlmostEqual(calculate_average(10.5, 20.5), 15.5)
- Zuerst wird das Unittest-Modul mit
importgeladen, das Teil der Standardbibliothek von Python ist; class TestCalculateAverage(unittest.TestCase)erstellt einen neuen Testfall. Er erbt vonunittest.TestCase, das die Testfunktionalität bereitstellt;- Jede Methode in der Klasse sollte mit
test_beginnen; - Die Methoden verwenden spezifische assert-Anweisungen, um zu überprüfen, ob eine Bedingung erfüllt ist.
Beispiel für eine erfolgreiche Testausgabe
Wenn alle Tests im Unittest erfolgreich sind, ist die Ausgabe übersichtlich und zeigt an, dass alle Tests ohne Fehler ausgeführt wurden. Hier ist ein Beispiel für einen erfolgreichen Testlauf:
...
----------------------------------------------------------------------
Ran 3 tests in 0.002s
OK
Beispiel für eine fehlgeschlagene Testausgabe
Wenn ein oder mehrere Tests fehlschlagen, liefert die Ausgabe Details zu den Fehlern, einschließlich der Information, welche Tests fehlgeschlagen sind und warum. Hier ist ein Beispiel, wie eine fehlgeschlagene Testausgabe aussehen kann:
..F
----------------------------------------------------------------------
Ran 3 tests in 0.003s
FAILED (failures=1)
======================================================================
FAIL: test_average_floats (test_module.TestCalculateAverage)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/path/to/test_module.py", line 10, in test_average_floats
self.assertAlmostEqual(calculate_average(10.0, 20.0), 15.1)
AssertionError: 15.0 != 15.1 within 7 places (0.10000000000000142 difference)
----------------------------------------------------------------------
Diese Ausgabe enthält:
..Fzeigt an, dass drei Tests ausgeführt wurden; die ersten beiden bestanden (..), der dritte schlug fehl (F);FAILED (failures=1)zeigt, dass es einen Fehler unter den ausgeführten Tests gab;- Der detaillierte Fehlerbericht beginnt mit der Testkennung (
test_average_floats) und der Klasse (TestCalculateAverage). Es wird ein Traceback zur fehlerverursachenden Zeile im Testcode angezeigt und die Art des Assertion-Fehlers erläutert, einschließlich des erwarteten Werts, des tatsächlichen Werts und der zulässigen Fehlertoleranz.
Danke für Ihr Feedback!