Einführung in das Testen mit Python
Im Abschnitt Fehlerbehandlung haben wir untersucht, wie sowohl Syntaxfehler als auch Laufzeitfehler behandelt werden können, sind jedoch nicht auf die Behandlung von logischen Fehlern eingegangen. In diesem Abschnitt werden wir zwei Testarten betrachten, die für die Überprüfung der Logik unserer Anwendungen unerlässlich sind: manuelles und automatisiertes Testen.
Das Testen wird im Allgemeinen in diese beiden Kategorien unterteilt. Manuelles Testen bedeutet, dass menschliche Tester die Tests durch Interaktion mit der Anwendung ausführen und die Korrektheit der Funktionen gemäß den Anforderungen überprüfen. Diese Art des Testens ist hilfreich, kann jedoch zeitaufwendig sein und ist anfällig für menschliche Fehler.
Automatisiertes Testen hingegen verwendet Skripte und Tools, um Tests automatisch und ohne direkte menschliche Eingriffe durchzuführen, wodurch sichergestellt wird, dass sich die Anwendung wie erwartet verhält. Dies beschleunigt nicht nur den Testprozess, sondern erhöht auch dessen Genauigkeit und Konsistenz.
Einführung in Testgetriebene Entwicklung (TDD)
Eine zentrale Methodik im automatisierten Testen ist die testgetriebene Entwicklung (TDD). TDD ist ein innovativer Entwicklungsprozess, bei dem Tests vor dem eigentlichen Code geschrieben werden. Der Prozess folgt einem einfachen Zyklus: Einen Test schreiben, den Test ausführen (der zunächst fehlschlagen sollte), den minimal notwendigen Code schreiben, um den Test zu bestehen, und anschließend den Code überarbeiten, um Sauberkeit und Effizienz sicherzustellen.
Überblick über Unittest- und Pytest-Frameworks
Python bietet mehrere Frameworks zum Schreiben und Ausführen von Tests, wobei Unittest und Pytest zu den beliebtesten gehören.
Unittest
Unittest ist das eingebaute Test-Framework von Python. Unittest ist klassenbasiert und erfordert, dass Tests in Klassen als Unterklassen von unittest.TestCase organisiert werden.
Pytest
Pytest ist ein leistungsstarkes drittanbieter Test-Framework, das einfachere Testfälle sowohl für einfache als auch für komplexe Testszenarien unterstützt. Im Gegensatz zu Unittest ermöglicht Pytest das Schreiben von Testfunktionen, ohne dass diese in Klassen eingebettet werden müssen.
Testen einer Durchschnittsberechnungsfunktion
Betrachten wir eine einfache Funktion, die den Durchschnitt von zwei Zahlen berechnet, und sehen wir uns an, wie sie sowohl mit Unittest als auch mit Pytest getestet werden kann.
Zu testende Funktion:
1234def calculate_average(num1, num2): return (num1 + num2) / 2 print(calculate_average(3, 5))
Testen mit Unittest
import unittest
class TestAverageCalculation(unittest.TestCase):
def test_average(self):
result = calculate_average(10, 20)
self.assertEqual(result, 15)
Testen mit pytest
import pytest
def test_average():
assert calculate_average(10, 20) == 15
Während Unittest hervorragend für Entwickler geeignet ist, die mit dem xUnit-Format vertraut sind und einen strukturierten, objektorientierten Ansatz für Tests bevorzugen, richtet sich Pytest an diejenigen, die mehr Flexibilität und Einfachheit suchen sowie leistungsstarke Funktionen für komplexe Tests benötigen, die mit Unittest nicht so einfach umsetzbar sind.
Bis zum nächsten Kapitel!
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 more about logical errors and how to detect them?
What are the main differences between manual and automated testing?
Could you provide more examples of using Unittest and Pytest?
Großartig!
Completion Rate verbessert auf 3.13
Einführung in das Testen mit Python
Swipe um das Menü anzuzeigen
Im Abschnitt Fehlerbehandlung haben wir untersucht, wie sowohl Syntaxfehler als auch Laufzeitfehler behandelt werden können, sind jedoch nicht auf die Behandlung von logischen Fehlern eingegangen. In diesem Abschnitt werden wir zwei Testarten betrachten, die für die Überprüfung der Logik unserer Anwendungen unerlässlich sind: manuelles und automatisiertes Testen.
Das Testen wird im Allgemeinen in diese beiden Kategorien unterteilt. Manuelles Testen bedeutet, dass menschliche Tester die Tests durch Interaktion mit der Anwendung ausführen und die Korrektheit der Funktionen gemäß den Anforderungen überprüfen. Diese Art des Testens ist hilfreich, kann jedoch zeitaufwendig sein und ist anfällig für menschliche Fehler.
Automatisiertes Testen hingegen verwendet Skripte und Tools, um Tests automatisch und ohne direkte menschliche Eingriffe durchzuführen, wodurch sichergestellt wird, dass sich die Anwendung wie erwartet verhält. Dies beschleunigt nicht nur den Testprozess, sondern erhöht auch dessen Genauigkeit und Konsistenz.
Einführung in Testgetriebene Entwicklung (TDD)
Eine zentrale Methodik im automatisierten Testen ist die testgetriebene Entwicklung (TDD). TDD ist ein innovativer Entwicklungsprozess, bei dem Tests vor dem eigentlichen Code geschrieben werden. Der Prozess folgt einem einfachen Zyklus: Einen Test schreiben, den Test ausführen (der zunächst fehlschlagen sollte), den minimal notwendigen Code schreiben, um den Test zu bestehen, und anschließend den Code überarbeiten, um Sauberkeit und Effizienz sicherzustellen.
Überblick über Unittest- und Pytest-Frameworks
Python bietet mehrere Frameworks zum Schreiben und Ausführen von Tests, wobei Unittest und Pytest zu den beliebtesten gehören.
Unittest
Unittest ist das eingebaute Test-Framework von Python. Unittest ist klassenbasiert und erfordert, dass Tests in Klassen als Unterklassen von unittest.TestCase organisiert werden.
Pytest
Pytest ist ein leistungsstarkes drittanbieter Test-Framework, das einfachere Testfälle sowohl für einfache als auch für komplexe Testszenarien unterstützt. Im Gegensatz zu Unittest ermöglicht Pytest das Schreiben von Testfunktionen, ohne dass diese in Klassen eingebettet werden müssen.
Testen einer Durchschnittsberechnungsfunktion
Betrachten wir eine einfache Funktion, die den Durchschnitt von zwei Zahlen berechnet, und sehen wir uns an, wie sie sowohl mit Unittest als auch mit Pytest getestet werden kann.
Zu testende Funktion:
1234def calculate_average(num1, num2): return (num1 + num2) / 2 print(calculate_average(3, 5))
Testen mit Unittest
import unittest
class TestAverageCalculation(unittest.TestCase):
def test_average(self):
result = calculate_average(10, 20)
self.assertEqual(result, 15)
Testen mit pytest
import pytest
def test_average():
assert calculate_average(10, 20) == 15
Während Unittest hervorragend für Entwickler geeignet ist, die mit dem xUnit-Format vertraut sind und einen strukturierten, objektorientierten Ansatz für Tests bevorzugen, richtet sich Pytest an diejenigen, die mehr Flexibilität und Einfachheit suchen sowie leistungsstarke Funktionen für komplexe Tests benötigen, die mit Unittest nicht so einfach umsetzbar sind.
Bis zum nächsten Kapitel!
Danke für Ihr Feedback!