Tests mit Unittest Schreiben
Swipe um das Menü anzuzeigen
Um sicherzustellen, dass Ihr Code wie erwartet funktioniert, ist das Schreiben automatisierter Tests unerlässlich. Das Python-Modul unittest ist ein integriertes Framework, das das Erstellen und Organisieren von Tests erleichtert. Testfälle werden erstellt, indem Klassen definiert werden, die von unittest.TestCase erben. Innerhalb dieser Klassen werden Methoden definiert, deren Namen mit test_ beginnen. Jede Methode überprüft einen bestimmten Aspekt Ihres Codes.
Eine Testsuite ist eine Sammlung von Testfällen, die gemeinsam ausgeführt werden können. Standardmäßig entdeckt und führt unittest alle test_-Methoden in Ihren TestCase-Klassen aus. Um zu überprüfen, ob Ihr Code die erwarteten Ergebnisse liefert, verwenden Sie Assertion-Methoden wie assertEqual, assertTrue, assertFalse und assertRaises. Diese Assertion-Methoden vergleichen die tatsächlichen Ergebnisse mit den erwarteten und melden Fehler, wenn sie nicht übereinstimmen.
Um Ihre Tests auszuführen, können Sie die Kommandozeile verwenden oder unittest.main() am Ende Ihrer Testdatei aufrufen.
assertRaises folgt einem anderen Muster als andere Assertion-Methoden wie assertEqual oder assertTrue. Anstatt einen Endwert zu überprüfen, wird es als Kontextmanager mit der with-Anweisung verwendet, um einen geschützten Bereich zu schaffen. Dadurch kann der Test den Code während der Ausführung überwachen und den erwarteten Fehler "abfangen".
1234567891011121314151617181920212223import unittest def add(a, b): return a + b def divide(a, b): return a / b class TestMathFunctions(unittest.TestCase): def test_add_positive_numbers(self): self.assertEqual(add(2, 3), 5) def test_add_negative_numbers(self): self.assertEqual(add(-2, -3), -5) def test_divide_normal(self): self.assertAlmostEqual(divide(10, 2), 5.0) def test_divide_by_zero(self): with self.assertRaises(ZeroDivisionError): divide(10, 0) unittest.main(argv=['first-arg-is-ignored'], exit=False)
Die Funktion unittest.main() in diesem Kapitel enthält einige zusätzliche Parameter, die nur für diese Lernumgebung erforderlich sind. Sie sorgen dafür, dass der Code auf der Plattform korrekt ausgeführt wird, und sind kein Bestandteil der grundlegenden Python-Konzepte, die du jetzt lernen musst.
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