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

bookSetup und Teardown in Unittest: Verwaltung von Testumgebungen

Die vier Phasen eines Tests:

  1. SetUp: Vorbereitung der Umgebung. 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: Ausführung der zu testenden Funktion oder Methode;
  3. Assert: Überprüfung und Validierung der Ergebnisse im Vergleich zu den erwarteten Resultaten;
  4. TearDown: Aufräumen nach jedem Test. Dies stellt sicher, dass Änderungen an der Umgebung keine Auswirkungen auf nachfolgende Tests haben.

SetUp und tearDown sind optionale Phasen.

Implementierung von SetUp und TearDown

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

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

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 wieder 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, wodurch Tests vorhersehbar und unabhängig bleiben.

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 verringern den Aufwand für die Vorbereitung und das Aufräumen von Ressourcen, deren Erstellung und Zerstörung aufwendig ist.

Aufgabe

Swipe to start coding

Üben Sie die Verwendung der Methoden setUp und tearDown in unittest, indem Sie eine Book-Klasse testen.

  • Definieren Sie eine Testklasse mit dem Namen TestBook, die von unittest.TestCase erbt.
  • Implementieren Sie eine setUp-Methode, die eine Book-Instanz mit dem Titel '1984', dem Autor 'George Orwell' und der Anzahl 2 erstellt. Weisen Sie diese Instanz self.book zu.
  • Implementieren Sie eine tearDown-Methode, die die Instanz self.book löscht.
  • Fügen Sie eine Methode mit dem Namen test_sale hinzu, die:
    • Die Methode sale zweimal auf self.book aufruft;
    • Überprüft, dass der zweite Aufruf den Wert 'This book sold out' zurückgibt.
  • Fügen Sie eine Methode mit dem Namen test_book_repr hinzu, die überprüft, dass die Zeichenkettenrepräsentation von self.book '<Book 1984, written by George Orwell, 2 pieces>' ist.
  • Verwenden Sie genau diese Funktions- und Klassennamen, damit Ihre Tests erfolgreich sind.

Lösung

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 5. Kapitel 3
single

single

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

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

close

bookSetup und Teardown in Unittest: Verwaltung von Testumgebungen

Swipe um das Menü anzuzeigen

Die vier Phasen eines Tests:

  1. SetUp: Vorbereitung der Umgebung. 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: Ausführung der zu testenden Funktion oder Methode;
  3. Assert: Überprüfung und Validierung der Ergebnisse im Vergleich zu den erwarteten Resultaten;
  4. TearDown: Aufräumen nach jedem Test. Dies stellt sicher, dass Änderungen an der Umgebung keine Auswirkungen auf nachfolgende Tests haben.

SetUp und tearDown sind optionale Phasen.

Implementierung von SetUp und TearDown

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

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

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 wieder 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, wodurch Tests vorhersehbar und unabhängig bleiben.

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 verringern den Aufwand für die Vorbereitung und das Aufräumen von Ressourcen, deren Erstellung und Zerstörung aufwendig ist.

Aufgabe

Swipe to start coding

Üben Sie die Verwendung der Methoden setUp und tearDown in unittest, indem Sie eine Book-Klasse testen.

  • Definieren Sie eine Testklasse mit dem Namen TestBook, die von unittest.TestCase erbt.
  • Implementieren Sie eine setUp-Methode, die eine Book-Instanz mit dem Titel '1984', dem Autor 'George Orwell' und der Anzahl 2 erstellt. Weisen Sie diese Instanz self.book zu.
  • Implementieren Sie eine tearDown-Methode, die die Instanz self.book löscht.
  • Fügen Sie eine Methode mit dem Namen test_sale hinzu, die:
    • Die Methode sale zweimal auf self.book aufruft;
    • Überprüft, dass der zweite Aufruf den Wert 'This book sold out' zurückgibt.
  • Fügen Sie eine Methode mit dem Namen test_book_repr hinzu, die überprüft, dass die Zeichenkettenrepräsentation von self.book '<Book 1984, written by George Orwell, 2 pieces>' ist.
  • Verwenden Sie genau diese Funktions- und Klassennamen, damit Ihre Tests erfolgreich sind.

Lösung

Switch to desktopWechseln Sie zum Desktop, um in der realen Welt zu übenFahren Sie dort fort, wo Sie sind, indem Sie eine der folgenden Optionen verwenden
War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 5. Kapitel 3
single

single

some-alt