Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre SetUp et TearDown dans Unittest : Gestion des Environnements de Test | Cadre Unittest
Quizzes & Challenges
Quizzes
Challenges
/
Concepts Avancés de Python

bookSetUp et TearDown dans Unittest : Gestion des Environnements de Test

Les quatre phases d’un test :

  1. SetUp : préparation de l’environnement. Cela peut impliquer la création d’objets dans la base de données, la configuration d’états système comme le démarrage de services ou la mise en place de connexions à la base de données ;
  2. Act : exécution de la fonction ou des méthodes à tester ;
  3. Assert : vérification et validation des résultats par rapport aux résultats attendus ;
  4. TearDown : nettoyage après chaque test. Cela garantit que toute modification de l’environnement n’affecte pas les tests suivants.

SetUp et tearDown sont des phases optionnelles.

Implémentation de SetUp et TearDown

Les méthodes setUp et tearDown dans Unittest sont des méthodes d’instance appelées respectivement avant et après chaque méthode de test.

Considérons une classe Book avec des méthodes personnalisées __repr__ et sale.

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"

L’étape suivante consiste à définir les cas de test dans la classe TestBook.

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>")

Après l’exécution du cas test_sale, le nombre de livres est réinitialisé à la valeur d’origine pour test_book_repr car la méthode setUp s’exécute avant chaque test.

SetUp et tearDown au niveau de la méthode garantissent que chaque test s’exécute dans un environnement propre, rendant les tests prévisibles et indépendants.

Implémentation de SetUpClass et TearDownClass

Ce sont des méthodes de classe qui s’exécutent une seule fois pour toute la classe, au début et à la fin de la suite de tests.

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 et tearDown au niveau de la classe réduisent la surcharge liée à la préparation et au nettoyage de ressources coûteuses à créer et à détruire.

Tâche

Swipe to start coding

Exercez-vous à utiliser les méthodes setUp et tearDown dans unittest en testant une classe Book.

  • Définir une classe de test nommée TestBook qui hérite de unittest.TestCase.
  • Implémenter une méthode setUp qui crée une instance de Book avec le titre '1984', l'auteur 'George Orwell' et la quantité 2. L’assigner à self.book.
  • Implémenter une méthode tearDown qui supprime l’instance self.book.
  • Ajouter une méthode nommée test_sale qui :
    • Appelle la méthode sale sur self.book deux fois ;
    • Vérifie que le second appel retourne 'This book sold out'.
  • Ajouter une méthode nommée test_book_repr qui vérifie que la représentation sous forme de chaîne de caractères de self.book est '<Book 1984, written by George Orwell, 2 pieces>'.
  • Utilisez exactement ces noms de fonctions et de classes pour que vos tests réussissent.

Solution

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 5. Chapitre 3
single

single

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

close

bookSetUp et TearDown dans Unittest : Gestion des Environnements de Test

Glissez pour afficher le menu

Les quatre phases d’un test :

  1. SetUp : préparation de l’environnement. Cela peut impliquer la création d’objets dans la base de données, la configuration d’états système comme le démarrage de services ou la mise en place de connexions à la base de données ;
  2. Act : exécution de la fonction ou des méthodes à tester ;
  3. Assert : vérification et validation des résultats par rapport aux résultats attendus ;
  4. TearDown : nettoyage après chaque test. Cela garantit que toute modification de l’environnement n’affecte pas les tests suivants.

SetUp et tearDown sont des phases optionnelles.

Implémentation de SetUp et TearDown

Les méthodes setUp et tearDown dans Unittest sont des méthodes d’instance appelées respectivement avant et après chaque méthode de test.

Considérons une classe Book avec des méthodes personnalisées __repr__ et sale.

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"

L’étape suivante consiste à définir les cas de test dans la classe TestBook.

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>")

Après l’exécution du cas test_sale, le nombre de livres est réinitialisé à la valeur d’origine pour test_book_repr car la méthode setUp s’exécute avant chaque test.

SetUp et tearDown au niveau de la méthode garantissent que chaque test s’exécute dans un environnement propre, rendant les tests prévisibles et indépendants.

Implémentation de SetUpClass et TearDownClass

Ce sont des méthodes de classe qui s’exécutent une seule fois pour toute la classe, au début et à la fin de la suite de tests.

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 et tearDown au niveau de la classe réduisent la surcharge liée à la préparation et au nettoyage de ressources coûteuses à créer et à détruire.

Tâche

Swipe to start coding

Exercez-vous à utiliser les méthodes setUp et tearDown dans unittest en testant une classe Book.

  • Définir une classe de test nommée TestBook qui hérite de unittest.TestCase.
  • Implémenter une méthode setUp qui crée une instance de Book avec le titre '1984', l'auteur 'George Orwell' et la quantité 2. L’assigner à self.book.
  • Implémenter une méthode tearDown qui supprime l’instance self.book.
  • Ajouter une méthode nommée test_sale qui :
    • Appelle la méthode sale sur self.book deux fois ;
    • Vérifie que le second appel retourne 'This book sold out'.
  • Ajouter une méthode nommée test_book_repr qui vérifie que la représentation sous forme de chaîne de caractères de self.book est '<Book 1984, written by George Orwell, 2 pieces>'.
  • Utilisez exactement ces noms de fonctions et de classes pour que vos tests réussissent.

Solution

Switch to desktopPassez à un bureau pour une pratique réelleContinuez d'où vous êtes en utilisant l'une des options ci-dessous
Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 5. Chapitre 3
single

single

some-alt