Titre : Utiliser pytest pour les tests automatisés en Python


Introduction

Si vous cherchez un outil moderne, rapide et flexible pour écrire et exécuter vos tests automatisés en Python, alors pytest est sans doute votre meilleur allié. Très populaire dans l’écosystème Python, pytest propose une syntaxe minimaliste, des fonctionnalités puissantes et une excellente intégration avec les outils de CI.

Dans cet article, vous allez découvrir comment utiliser pytest pour écrire vos tests unitaires, les exécuter efficacement, gérer les erreurs, structurer vos projets, et tirer profit de ses options avancées.


1. Installation de pytest

pip install pytest

Vérifiez l’installation :

pytest --version


2. Votre premier test avec pytest

fichier : test_demo.py

def addition(a, b):
    return a + b

def test_addition():
    assert addition(2, 3) == 5

Exécution du test :

pytest

✅ Résultat : 1 test passed


3. Règles de nommage avec pytest

  • Les fichiers doivent commencer par test_ ou finir par _test.py
  • Les fonctions de test doivent commencer par test_
  • Pas besoin de classes, ni de unittest.TestCase

4. Écrire plusieurs tests

def test_addition_positive():
    assert addition(10, 5) == 15

def test_addition_zero():
    assert addition(0, 0) == 0


5. Tester les exceptions

import pytest

def division(a, b):
    return a / b

def test_division_zero():
    with pytest.raises(ZeroDivisionError):
        division(5, 0)


6. Exécuter les tests avec détails

pytest -v

  • -v : mode verbeux (plus de détails)
  • -q : mode silencieux

7. Ajouter un message personnalisé

def test_nombre_pair():
    x = 4
    assert x % 2 == 0, "Le nombre n'est pas pair"


8. Utiliser des fixtures (préparation des données)

import pytest

@pytest.fixture
def panier_vide():
    return []

def test_ajouter_article(panier_vide):
    panier_vide.append("pomme")
    assert "pomme" in panier_vide


9. Utiliser des paramètres de test

import pytest

@pytest.mark.parametrize("a, b, resultat", [
    (1, 1, 2),
    (2, 3, 5),
    (0, 0, 0)
])
def test_addition_parametree(a, b, resultat):
    assert addition(a, b) == resultat


10. Structurer vos tests dans un projet

Arborescence recommandée :

mon_projet/
├── src/
│   └── mon_module.py
├── tests/
│   ├── __init__.py
│   └── test_mon_module.py

Lancer tous les tests avec :

pytest tests/


11. Intégration avec les outils de CI/CD

pytest est compatible avec GitHub Actions, GitLab CI, Travis, etc.

Exemple de GitHub Action :

name: Tests

on: [push]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - name: Installer Python
      uses: actions/setup-python@v4
      with:
        python-version: '3.11'
    - run: pip install -r requirements.txt
    - run: pytest


12. Générer un rapport HTML des tests

pip install pytest-html
pytest --html=rapport.html


Conclusion

pytest est un outil puissant, rapide et intuitif pour écrire des tests unitaires et fonctionnels en Python. Grâce à sa syntaxe épurée, ses fixtures, son paramétrage de tests, et sa compatibilité avec les outils modernes, il est devenu la référence pour les projets Python sérieux. Adopter pytest, c’est investir dans la qualité, la robustesse et la maintenabilité de votre code.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *