Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Einführung in das Testen mit Python | Pytest Framework
Python Fortgeschrittene Konzepte

bookEinfü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:

1234
def calculate_average(num1, num2): return (num1 + num2) / 2 print(calculate_average(3, 5))
copy

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!

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 1

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Suggested prompts:

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?

bookEinfü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:

1234
def calculate_average(num1, num2): return (num1 + num2) / 2 print(calculate_average(3, 5))
copy

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!

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 1
some-alt