Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer SetUp en TearDown in Unittest: Beheer van Testomgevingen | Unittest-Framework Beheersen
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Python Structureel Programmeren

bookSetUp en TearDown in Unittest: Beheer van Testomgevingen

De vier fasen van een test:

  1. SetUp: voorbereiden van de omgeving. Dit kan het aanmaken van objecten in de database omvatten, het configureren van systeemstatussen zoals het starten van services of het opzetten van databaseverbindingen;
  2. Act: uitvoeren van de functie of methoden die getest moeten worden;
  3. Assert: controleren en verifiëren van de uitkomsten ten opzichte van de verwachte resultaten;
  4. TearDown: opruimen na elke test. Dit zorgt ervoor dat eventuele wijzigingen in de omgeving geen invloed hebben op volgende tests.

SetUp en tearDown zijn optionele fasen.

Implementatie van SetUp en TearDown

De setUp en tearDown methoden in Unittest zijn instantiemethoden die respectievelijk vóór en na elke testmethode worden aangeroepen.

Beschouw een Book klasse met aangepaste __repr__ en 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"

De volgende stap is het definiëren van de testgevallen binnen de 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>")

Nadat de test_sale case is geslaagd, wordt het aantal boeken teruggezet naar de oorspronkelijke waarde voor de test_book_repr omdat de setUp-methode vóór elke test wordt uitgevoerd.

SetUp en tearDown op methodeniveau zorgen ervoor dat elke test in een schone omgeving draait, waardoor tests voorspelbaar en onafhankelijk zijn.

Implementatie van SetUpClass en TearDownClass

Dit zijn classmethoden die één keer voor de hele klasse worden uitgevoerd, aan het begin en einde van de test suite.

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 en tearDown op klassenniveau verminderen de overhead van het voorbereiden en opruimen van resources die duur zijn om aan te maken en te vernietigen.

Taak

Swipe to start coding

Oefen met het gebruik van de setUp- en tearDown-methoden in unittest door een Book-klasse te testen.

  • Definieer een testklasse genaamd TestBook die erft van unittest.TestCase.
  • Implementeer een setUp-methode die een Book-instantie aanmaakt met de titel '1984', auteur 'George Orwell' en amount 2. Wijs deze toe aan self.book.
  • Implementeer een tearDown-methode die de instantie self.book verwijdert.
  • Voeg een methode toe genaamd test_sale die:
    • De sale-methode twee keer aanroept op self.book;
    • Controleert dat de tweede aanroep 'This book sold out' retourneert.
  • Voeg een methode toe genaamd test_book_repr die controleert dat de stringrepresentatie van self.book gelijk is aan '<Book 1984, written by George Orwell, 2 pieces>'.
  • Gebruik exact deze functienamen en klassenamen zodat je tests slagen.

Oplossing

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 5. Hoofdstuk 3
single

single

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Suggested prompts:

Can you explain the difference between setUp/tearDown and setUpClass/tearDownClass in more detail?

What happens if I don't use setUp or tearDown methods in my tests?

Can you show an example where setUpClass and tearDownClass are necessary?

close

bookSetUp en TearDown in Unittest: Beheer van Testomgevingen

Veeg om het menu te tonen

De vier fasen van een test:

  1. SetUp: voorbereiden van de omgeving. Dit kan het aanmaken van objecten in de database omvatten, het configureren van systeemstatussen zoals het starten van services of het opzetten van databaseverbindingen;
  2. Act: uitvoeren van de functie of methoden die getest moeten worden;
  3. Assert: controleren en verifiëren van de uitkomsten ten opzichte van de verwachte resultaten;
  4. TearDown: opruimen na elke test. Dit zorgt ervoor dat eventuele wijzigingen in de omgeving geen invloed hebben op volgende tests.

SetUp en tearDown zijn optionele fasen.

Implementatie van SetUp en TearDown

De setUp en tearDown methoden in Unittest zijn instantiemethoden die respectievelijk vóór en na elke testmethode worden aangeroepen.

Beschouw een Book klasse met aangepaste __repr__ en 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"

De volgende stap is het definiëren van de testgevallen binnen de 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>")

Nadat de test_sale case is geslaagd, wordt het aantal boeken teruggezet naar de oorspronkelijke waarde voor de test_book_repr omdat de setUp-methode vóór elke test wordt uitgevoerd.

SetUp en tearDown op methodeniveau zorgen ervoor dat elke test in een schone omgeving draait, waardoor tests voorspelbaar en onafhankelijk zijn.

Implementatie van SetUpClass en TearDownClass

Dit zijn classmethoden die één keer voor de hele klasse worden uitgevoerd, aan het begin en einde van de test suite.

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 en tearDown op klassenniveau verminderen de overhead van het voorbereiden en opruimen van resources die duur zijn om aan te maken en te vernietigen.

Taak

Swipe to start coding

Oefen met het gebruik van de setUp- en tearDown-methoden in unittest door een Book-klasse te testen.

  • Definieer een testklasse genaamd TestBook die erft van unittest.TestCase.
  • Implementeer een setUp-methode die een Book-instantie aanmaakt met de titel '1984', auteur 'George Orwell' en amount 2. Wijs deze toe aan self.book.
  • Implementeer een tearDown-methode die de instantie self.book verwijdert.
  • Voeg een methode toe genaamd test_sale die:
    • De sale-methode twee keer aanroept op self.book;
    • Controleert dat de tweede aanroep 'This book sold out' retourneert.
  • Voeg een methode toe genaamd test_book_repr die controleert dat de stringrepresentatie van self.book gelijk is aan '<Book 1984, written by George Orwell, 2 pieces>'.
  • Gebruik exact deze functienamen en klassenamen zodat je tests slagen.

Oplossing

Switch to desktopSchakel over naar desktop voor praktijkervaringGa verder vanaf waar je bent met een van de onderstaande opties
Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 5. Hoofdstuk 3
single

single

some-alt