Outils pour utilisateurs

Outils du site


dev:python:unittest:start

Tests unitaires en python avec unittest

Généralités

unittest est un framework de test unitaires, c'est une implémentation Python des frameworks de type xUnit inspirés de SUnit(Smalltalk's SUnit), conçu par Kent Beck in 1998 pour le langage orienté objet Smalltalk.

  • Runner: Le programme en charge d'exécuter les tests créés via le framework et de présenter les résultats.
  • Test fixture: Aménagement ou initialisation d'un environnement/contexte nécessaire à un ou plusieurs tests: création de répertoire, base de données temporaires, démarrage de processus serveur, etc.
  • Test case (cas d'utilisation ou scénario de test): élément de base des tests. Il attend une réponse spécifique pour un ensemble particulier d'entrées. Le scénario considère un ensemble de conditions pour lesquelles on souhaite vérifier que le système réagit correctement.
  • Test suite: collection de tests utilisée pour montrer qu'un programme réagit comme prévu dans l'ensemble des situation décrites par les tests.

Usage

  • Les fichiers de tests sont des scripts Python dont le nom est préfixés par test_
  • On importe le module unittest
  • Le script de test doit contenir une classe qui dérive de la classe unittest.TestCase
  • Les méthodes de tests contenues dans la classe doivent commencer par le mot clé test. Cette convention permet au runner d'identifier les méthodes de test.
import unittest

On importe le module pour lequel on souhaite tester une fonction ou méthode:

from mon_module import fonction_a_tester as fonction_a_tester

On crée une classe de test elle doit impérativement hériter d'unittest.TestCase

Les méthodes assertX

Les méthodes usuelles:

assertEqual() Vérifier que la valeur retournée est identique à celle attendue
assertTrue()  La valeur retournée doit être Vrai
assertFalse() La valeur retournée doit être Faux
assertRaises() Vérifie la levée d'une exception spécifique

Lancer les tests

Plusieurs façon de démarrer les tests:

# Retrouve tous les fichier test_* et les exécute
python -m unittest discover
 
# Exécuter un script de test en particulier
python -m unittest test_file.py
 
# Appeler directement le script, doit contenir l'appel
# de la méthode unittest.main() dans le script 
python test_file.py

Exemples

Références

dev/python/unittest/start.txt · Dernière modification : 2022/07/20 19:51 de yoann