Pytest : Guide complet pour les tests en Python
Introduction à Pytest
Les tests sont un élément essentiel du développement logiciel. Sans tests de qualité, il est difficile de garantir la fiabilité du code et son bon fonctionnement lors des modifications. Pytest est un framework moderne, puissant et convivial pour les tests automatisés en Python, qui simplifie considérablement l'écriture et l'exécution des tests.
Pytest a gagné en popularité auprès des développeurs grâce à sa syntaxe concise, ses nombreuses possibilités d'extension et son système de fixtures robuste. Il surpasse largement le module standard unittest en termes de simplicité d'utilisation et de rapidité de développement des tests.
Installation et configuration de Pytest
Installation via pip
pip install pytest
Vérification de l'installation
pytest --version
Premier test simple
Créez un fichier test_example.py :
def test_addition():
assert 2 + 2 == 4
def test_operations_chaines():
texte = "Bonjour, le monde !"
assert "Bonjour" in texte
assert len(texte) == 19
Exécution des tests
pytest
Pytest détecte automatiquement tous les fichiers et fonctions de test qui respectent les conventions de nommage.
Structure et organisation des tests
Conventions de nommage
Pytest utilise les conventions suivantes pour la détection automatique des tests :
- Fichiers de test :
test_*.pyou*_test.py - Fonctions de test :
def test_...() - Classes de test :
class Test...(sans méthode__init__) - Méthodes de test dans les classes :
def test_...()
Organisation de la structure de test
projet/
├── src/
│ ├── calculatrice.py
│ └── utils.py
├── tests/
│ ├── test_calculatrice.py
│ ├── test_utils.py
│ └── conftest.py
└── pytest.ini
Exécution des tests avec différents paramètres
# Exécuter tous les tests
pytest
# Exécuter les tests dans un dossier spécifique
pytest tests/
# Exécuter un fichier spécifique
pytest test_calculatrice.py
# Exécuter un test spécifique
pytest test_calculatrice.py::test_addition
# Exécuter les tests d'une classe
pytest test_calculatrice.py::TestCalculatrice
# Exécuter une méthode spécifique d'une classe
pytest test_calculatrice.py::TestCalculatrice::test_multiplication
Bases de l'écriture des tests
Utilisation de assert pour les vérifications
Pytest utilise l'opérateur standard assert de Python pour vérifier les conditions :
def test_assertions_de_base():
# Vérification d'égalité
assert 2 + 2 == 4
# Vérification d'inégalité
assert 3 * 3 != 8
# Vérification d'appartenance
assert "Python" in "Tests Python"
# Vérification de type
assert isinstance(42, int)
# Vérification de vérité
assert bool([1, 2, 3])
# Vérification de fausseté
assert not bool([])
Test des exceptions
import pytest
def diviser(a, b):
if b == 0:
raise ValueError("La division par zéro n'est pas autorisée")
return a / b
def test_division_par_zero():
with pytest.raises(ValueError):
diviser(10, 0)
def test_message_exception():
with pytest.raises(ValueError, match="division par zéro"):
diviser(10, 0)
def test_type_exception():
with pytest.raises(ZeroDivisionError):
1 / 0
Organisation des tests en classes
class TestCalculatrice:
def test_addition(self):
assert 2 + 3 == 5
def test_soustraction(self):
assert 10 - 4 == 6
Aussi dans la bibliothèque
Mise en cache en C# (.NET) : Redis et autres solutions
Configuration des applications C# (.NET) : bibliothèques et approches
Programmation réactive en Java : bibliothèques Project Reactor et RxJava