Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Setup- und Teardown-Schritte | Unittest-Framework
Python Fortgeschrittene Konzepte
course content

Kursinhalt

Python Fortgeschrittene Konzepte

Python Fortgeschrittene Konzepte

1. Module und Importe
2. Fehlerbehandlung
3. Dateiverwaltung
4. Pytest Framework
5. Unittest-Framework
6. Iteratoren und Generatoren

book
Setup- und Teardown-Schritte

Die vier Phasen eines Tests:

  1. SetUp: Bereiten Sie die Umgebung vor. Dies kann das Erstellen von Objekten in der Datenbank, das Konfigurieren von Systemzuständen wie das Starten von Diensten oder das Einrichten von Datenbankverbindungen umfassen;
  2. Act: Führen Sie die zu testende Funktion oder Methode aus;
  3. Assert: Überprüfen und verifizieren Sie die Ergebnisse im Vergleich zu den erwarteten Ergebnissen;
  4. TearDown: Bereinigen Sie nach jedem Test. Dies stellt sicher, dass Änderungen an der Umgebung nachfolgende Tests nicht beeinflussen.

SetUp und tearDown sind optionale Phasen.

Implementierung von SetUp und TearDown

Die setUp- und tearDown-Methoden in Unittest sind Instanzmethoden, die vor und nach jeder Testmethode aufgerufen werden.

Betrachten wir eine Book-Klasse mit benutzerdefinierten __repr__- und sale-Methoden.

class Book:
    def __init__(self, title, author, amount):
        self.title = title
        self.author = author
        self.amount = amount

    def __repr__(self):
        return f"<Book {self.title}, written by {self.author}, {self.amount} pieces>"

    def sale(self):
        if self.amount > 0:
            self.amount -= 1
        else:
            return "This book sold out"

Im nächsten Schritt definieren wir die Testfälle innerhalb der TestBook-Klasse.

import unittest

class TestBook(unittest.TestCase):
    def setUp(self):
        print("Setting up the environment for each test.")
        self.book = Book("1984", "George Orwell", 2)

    def tearDown(self):
        print("Cleaning up after each test.")
        del self.book

    def test_sale(self):
        self.book.sale()
        assert self.book.sale() == "This book sold out"

    def test_book_repr(self):
        self.assertEqual(repr(self.book), "<Book 1984, written by George Orwell, 2 pieces>")

Nachdem der test_sale-Fall bestanden wurde, wurde die Anzahl der Bücher für den test_book_repr auf den ursprünglichen Wert zurückgesetzt, da die setUp-Methode vor jedem Test ausgeführt wird.

SetUp und tearDown auf Methodenebene stellen sicher, dass jeder Test in einer sauberen Umgebung ausgeführt wird, was Tests vorhersehbar und unabhängig macht.

Implementierung von SetUpClass und TearDownClass

Dies sind Klassenmethoden, die einmal für die gesamte Klasse am Anfang und Ende der Testsuite ausgeführt werden.

class TestBook(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        """This code will run before all tests"""
        print("Setting up the environment for all tests.")
        cls.book = Book("1984", "George Orwell", 2)

    @classmethod
    def tearDownClass(cls):
        """This code will run after all tests"""
        print("Cleaning up after all tests.")

    def test_sale(self):
        self.book.sale()
        assert self.book.sale() == "This book sold out"

    def test_book_repr(self):
        self.assertEqual(repr(self.book), "<Book 1984, written by George Orwell, 2 pieces>")
        # An AssertionError will occur because the amount was changed in the
        # 'test_sale' and the book was not updated prior to this test.

SetUp und tearDown auf Klassenebene reduzieren den Aufwand für die Vorbereitung und Bereinigung von Ressourcen, die teuer zu erstellen und zu zerstören sind.

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 5. Kapitel 3

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

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

course content

Kursinhalt

Python Fortgeschrittene Konzepte

Python Fortgeschrittene Konzepte

1. Module und Importe
2. Fehlerbehandlung
3. Dateiverwaltung
4. Pytest Framework
5. Unittest-Framework
6. Iteratoren und Generatoren

book
Setup- und Teardown-Schritte

Die vier Phasen eines Tests:

  1. SetUp: Bereiten Sie die Umgebung vor. Dies kann das Erstellen von Objekten in der Datenbank, das Konfigurieren von Systemzuständen wie das Starten von Diensten oder das Einrichten von Datenbankverbindungen umfassen;
  2. Act: Führen Sie die zu testende Funktion oder Methode aus;
  3. Assert: Überprüfen und verifizieren Sie die Ergebnisse im Vergleich zu den erwarteten Ergebnissen;
  4. TearDown: Bereinigen Sie nach jedem Test. Dies stellt sicher, dass Änderungen an der Umgebung nachfolgende Tests nicht beeinflussen.

SetUp und tearDown sind optionale Phasen.

Implementierung von SetUp und TearDown

Die setUp- und tearDown-Methoden in Unittest sind Instanzmethoden, die vor und nach jeder Testmethode aufgerufen werden.

Betrachten wir eine Book-Klasse mit benutzerdefinierten __repr__- und sale-Methoden.

class Book:
    def __init__(self, title, author, amount):
        self.title = title
        self.author = author
        self.amount = amount

    def __repr__(self):
        return f"<Book {self.title}, written by {self.author}, {self.amount} pieces>"

    def sale(self):
        if self.amount > 0:
            self.amount -= 1
        else:
            return "This book sold out"

Im nächsten Schritt definieren wir die Testfälle innerhalb der TestBook-Klasse.

import unittest

class TestBook(unittest.TestCase):
    def setUp(self):
        print("Setting up the environment for each test.")
        self.book = Book("1984", "George Orwell", 2)

    def tearDown(self):
        print("Cleaning up after each test.")
        del self.book

    def test_sale(self):
        self.book.sale()
        assert self.book.sale() == "This book sold out"

    def test_book_repr(self):
        self.assertEqual(repr(self.book), "<Book 1984, written by George Orwell, 2 pieces>")

Nachdem der test_sale-Fall bestanden wurde, wurde die Anzahl der Bücher für den test_book_repr auf den ursprünglichen Wert zurückgesetzt, da die setUp-Methode vor jedem Test ausgeführt wird.

SetUp und tearDown auf Methodenebene stellen sicher, dass jeder Test in einer sauberen Umgebung ausgeführt wird, was Tests vorhersehbar und unabhängig macht.

Implementierung von SetUpClass und TearDownClass

Dies sind Klassenmethoden, die einmal für die gesamte Klasse am Anfang und Ende der Testsuite ausgeführt werden.

class TestBook(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        """This code will run before all tests"""
        print("Setting up the environment for all tests.")
        cls.book = Book("1984", "George Orwell", 2)

    @classmethod
    def tearDownClass(cls):
        """This code will run after all tests"""
        print("Cleaning up after all tests.")

    def test_sale(self):
        self.book.sale()
        assert self.book.sale() == "This book sold out"

    def test_book_repr(self):
        self.assertEqual(repr(self.book), "<Book 1984, written by George Orwell, 2 pieces>")
        # An AssertionError will occur because the amount was changed in the
        # 'test_sale' and the book was not updated prior to this test.

SetUp und tearDown auf Klassenebene reduzieren den Aufwand für die Vorbereitung und Bereinigung von Ressourcen, die teuer zu erstellen und zu zerstören sind.

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 5. Kapitel 3
some-alt