Skip to Content

Tests avec Pytest et Coverage

Développement Informatique > Développement Python


Une formation de 2 jours pour maîtriser les tests Python avec Pytest, atteindre une couverture de code optimale et valider la qualité.

La formation en 6 mots clés

Tests Python

Pytest

Fixtures

Tests d'intégration

CI/CD

Coverage

Informations Pratiques et Programme

Prérequis


Python 3.7+, notions de test unitaire (arrange-act-assert), familiarité avec unittest ou équivalent.

Durée


2 jours

Contenu Technique de la Formation


Pytest est le framework de test le plus puissant en Python moderne. Cette formation couvre l’architecture avec fixtures, parametrization, markers, mocking avec unittest.mock et pytest-mock, mesure de couverture avec coverage.py/pytest-cov, et intégration CI/CD.

  • Pytest framework — test discovery, -v flag, configuration pytest.ini et pyproject.toml
  • Fixtures pytest — scopes (function, class, module, session), conftest.py, parametrization
  • Mocking et patching — unittest.mock.patch(), pytest-mock, monkeypatch
  • Markers et test selection — @pytest.mark.skip, @pytest.mark.xfail, custom markers
  • Coverage.py et pytest-cov — rapport de couverture, seuils, exclusions, HTML reports
  • Tests paramétriques — @pytest.mark.parametrize, data-driven testing

Objectifs de la Formation


Les objectifs visés par cette formation sont :

  • Écrire des tests pytest avec fixtures, scopes et conftest.py
  • Mocker des dépendances avec unittest.mock.patch et pytest-mock.mocker
  • Utiliser pytest.mark.parametrize pour tester plusieurs cas avec un seul test
  • Mesurer et rapporter la couverture de code avec coverage.py et pytest-cov
  • Intégrer pytest en CI/CD (GitHub Actions, GitLab CI) avec rapports de couverture
  • Déboguer les tests avec -vv, -s (print statements), --pdb et fixtures pytest

Table des Matières


Pytest : configuration et test discovery

  • Installation pytest et pytest plugins — pytest, pytest-cov, pytest-mock
  • pytest.ini, setup.cfg et pyproject.toml — configuration, chemin de discovery
  • Test discovery — convention de nommage (test_*.py, *_test.py)
  • Exécution des tests — pytest, -v, -x, -k filter, --collect-only
  • Assertions et matchers — assert, pytest.raises, pytest.warns, approx


Fixtures pytest et portée (scope)

  • Concept de fixture — setup/teardown déclaratif, réutilisabilité
  • Scopes — function, class, module, session, package
  • conftest.py — partage de fixtures entre tests, organisation hiérarchique
  • Fixture avec yield — setup et cleanup en une seule définition
  • Fixture parametrization — @pytest.fixture(params=[...]) pour générer variantes


Mocking, patching et monkeypatch

  • unittest.mock.patch() — patching de modules, classes, méthodes
  • Mock objects — MagicMock, side_effect, return_value, call assertions
  • pytest-mock et mocker fixture — pytest-mock wrapper autour unittest.mock
  • monkeypatch fixture — modification temporaire d’attributs, variables d’env
  • Mocking de requêtes HTTP — unittest.mock + requests-mock ou responses


Markers et test selection

  • @pytest.mark.skip et @pytest.mark.xfail — skip/expected failure
  • @pytest.mark.slow, @pytest.mark.integration — custom markers
  • -m flag — sélectionner tests par marker (pytest -m slow)
  • pytest.ini et custom markers — déclaration et registration
  • Conditional markers — @pytest.mark.skipif(condition) pour skip platform-specific


Coverage et tests paramétriques

  • pytest-cov et coverage.py — installer, générer rapport de couverture
  • Coverage reports — terminal, HTML, XML pour CI/CD
  • Coverage thresholds — --cov-fail-under pour seuils minimum
  • @pytest.mark.parametrize — data-driven testing avec multiples inputs
  • Combinaisons parametrize — tester cartesian product de paramètres


En Pratique


Écrire des tests robustes avec Pytest

  • Créer et organiser vos fichiers de test et cas de test
  • Utiliser les assertions intuitives et les messages d'erreur clairs


Maîtriser les fixtures et les paramétrages

  • Créer des fixtures réutilisables pour setup et teardown
  • Paramétrer les tests pour couvrir plusieurs cas d'entrée


Mesurer la couverture de code

  • Utiliser Coverage.py pour identifier les lignes non testées
  • Atteindre et maintenir 80%+ de couverture


Intégrer les tests dans votre pipeline CI/CD

  • Configurer les tests automatiques sur GitHub Actions ou GitLab CI
  • Bloquer les merges sans couverture suffisante


Modalités et Inscription


Cette formation est proposée selon deux formules pour s'adapter au mieux à vos besoins :


Session régulière

Des sessions sont organisées à intervalles réguliers. Demandez les prochaines dates planifiées pour vous inscrire à la prochaine session.


Sur mesure & intra-entreprise

Vous souhaitez former vos équipes directement dans vos locaux ou adapter le programme technique à votre contexte d'entreprise ? Contactez-nous pour obtenir un devis personnalisé.

Obtenir cette formation

Prêt à maîtriser les tests Python ? Rejoignez dès à présent la prochaine session ou contactez-nous pour organiser cette formation dans vos locaux.


Devis sur-mesure

S'inscrire à cette formation

Remplissez le formulaire pour obtenir plus d'informations.