Pytest – Tests Python

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

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_*.py ou *_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

Recommendations