Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Introduction au Framework Unittest | Cadre Unittest
Concepts Avancés de Python

book
Introduction au Framework Unittest

Unittest fait partie de la bibliothèque standard de Python, ce qui signifie qu'aucune installation supplémentaire n'est nécessaire pour commencer. Il est conçu autour du concept de cas de test, qui sont des classes Python dérivées de la classe TestCase du framework. Unittest est un excellent outil pour quiconque commence son parcours de test car il structure les tests d'une manière qui reflète les principes de la programmation orientée objet.

La Structure de Unittest

Dans Unittest, chaque test est une méthode au sein d'une sous-classe de unittest.TestCase. Ce design encourage le regroupement de tests connexes, ce qui peut aider à organiser le code de test de manière logique et à le rendre plus lisible.

Écrire un Test avec Unittest

Testons une fonction simple qui calcule la moyenne de deux nombres. Voici la fonction que nous voulons tester :

def calculate_average(num1, num2):
return (num1 + num2) / 2

Créer un Cas de Test

Pour créer un cas de test, vous devez définir une classe qui hérite de unittest.TestCase. Au sein de cette classe, vous pouvez ensuite définir des méthodes pour tester la fonction calculate_average.

import unittest

class TestCalculateAverage(unittest.TestCase):
def test_integers(self):
self.assertEqual(calculate_average(10, 20), 15)
def test_floats(self):
self.assertAlmostEqual(calculate_average(10.5, 20.5), 15.5)
  • Tout d'abord, vous import le module Unittest, qui fait partie de la bibliothèque standard de Python ;
  • class TestCalculateAverage(unittest.TestCase) crée un nouveau cas de test. Il hérite de unittest.TestCase, qui fournit la fonctionnalité de test ;
  • Chaque méthode de la classe doit commencer par test_ ;
  • Les méthodes utilisent une instruction assert spécifique pour vérifier si la condition est vraie.

Exemple d'une Sortie de Test Réussi

Lorsque tous les tests réussissent dans Unittest, la sortie est simple et indique que tous les tests ont été exécutés avec succès sans aucune défaillance. Voici un exemple d'une exécution de test réussie :

...
----------------------------------------------------------------------
Ran 3 tests in 0.002s

OK

Exemple d'une Sortie de Test Échoué

Si un ou plusieurs tests échouent, la sortie fournira des détails sur les échecs, y compris quels tests ont échoué et pourquoi. Voici un exemple de ce à quoi cela pourrait ressembler lorsqu'un test échoue :

..F
----------------------------------------------------------------------
Ran 3 tests in 0.003s

FAILED (failures=1)

======================================================================
FAIL: test_average_floats (test_module.TestCalculateAverage)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/path/to/test_module.py", line 10, in test_average_floats
self.assertAlmostEqual(calculate_average(10.0, 20.0), 15.1)
AssertionError: 15.0 != 15.1 within 7 places (0.10000000000000142 difference)

----------------------------------------------------------------------

Cette sortie inclut :

  • ..F indique que trois tests ont été exécutés ; les deux premiers ont réussi (représentés par ..), et le troisième a échoué (F);
  • FAILED (failures=1) montre qu'il y a eu un échec parmi les tests exécutés;
  • Le rapport d'erreur détaillé commence par l'identifiant du test (test_average_floats) et la classe (TestCalculateAverage). Il fournit une trace de la ligne dans votre code de test qui a causé l'échec et explique la nature de l'erreur d'assertion, y compris la valeur attendue, la valeur réelle, et la marge d'erreur acceptable.

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 5. Chapitre 1
some-alt