4D Training & Consultancy

Développement logiciel

Tester du code Python avec pytest

Une suite de tests opérationnelle sépare un changement livré d'un changement en attente. Cette formation en construit une avec pytest : fixtures et portées, cas paramétrés, monkeypatch et mocks, seuils de couverture non contournables, exécutions CI rapides et méthode de diagnostic des tests instables.

3 joursPrésentiel interne, en ligne ou sur mesureÉquipes corporate et groupes professionnelsNiveau: Intermédiaire

Aperçu

Un apprentissage pratique pour le transfert en situation de travail.

Les équipes rejettent rarement les tests par principe : elles les abandonnent parce que la suite est devenue lente, fragile et remplie de tests qui échouent pour des raisons étrangères au changement examiné. Cette formation construit une suite qui reste utile. Les participants écrivent des tests centrés sur le comportement, remplacent les données partagées mutables par des fixtures et des fabriques, couvrent les cas limites via parametrize et Hypothesis, et isolent bases de données, horloges et appels HTTP. La dernière journée traite l'instabilité, une couverture trompeuse et le code hérité sans aucun test.

Prérequis

Aisance dans l'écriture de fonctions, classes et modules Python. Familiarité avec Git et le terminal attendue.

Objectifs

  • Écrire des tests pytest ciblés portant sur le comportement et non sur l'implémentation.
  • Structurer fixtures, portées et conftest.py pour des données de test isolées et réutilisables.
  • Couvrir cas limites et erreurs avec parametrize, pytest.raises et Hypothesis.
  • Isoler bases de données, horloges et services HTTP avec monkeypatch, faux objets et mocks autospec.
  • Fixer un seuil de couverture et un budget de temps que la CI applique à chaque pull request.
  • Diagnostiquer la cause racine d'un test instable et décider de le corriger, l'isoler ou le supprimer.

Public cible

  • Développeurs Python introduisant des tests dans une base non testée
  • Ingénieurs QA passant des contrôles manuels aux suites de tests automatisées
  • Ingénieurs data validant la logique de transformation et les sorties de pipelines
  • Ingénieurs DevOps intégrant des gates de test aux pipelines de build et de déploiement
  • Responsables techniques définissant un critère de terminé pour leur équipe
  • Développeurs maintenant du code Python hérité que personne n'ose refactoriser

Programme

Une structure claire pour le parcours d'apprentissage.

Les points du programme sont regroupés dans un seul bloc au lieu de créer un module par ligne.

6modules24sujets
  1. 01Une suite de tests qui justifie son coût4 sujets
    • Assertions pytest, découverte des tests et lecture des sorties d'échec
    • Arrange, act, assert et un seul comportement testé par test
    • Tracer les frontières unitaire, intégration et bout en bout dans un projet Python
    • Décider ce qu'il ne faut pas tester et éviter d'affirmer sur les détails internes
  2. 02Fixtures et données de test4 sujets
    • Fixtures, portées fonction et session, et nettoyage avec yield
    • conftest.py et partage des fixtures dans un package de tests
    • tmp_path et tmp_path_factory pour isoler le système de fichiers entre tests
    • Fabriques et builders plutôt qu'un gros jeu de données partagé
    • parametrize pour cas tabulaires, valeurs limites et exemples de régression
    • Paramétrage empilé, identifiants personnalisés et noms de tests lisibles
    • Tests basés sur les propriétés avec Hypothesis pour des espaces d'entrée immenses
    • Vérifier exceptions, avertissements et messages d'erreur avec pytest.raises
    • monkeypatch pour variables d'environnement, horloge et attributs de module
    • unittest.mock avec autospec, vérifier les appels sans les surspécifier
    • Simuler le trafic HTTP avec responses ou respx plutôt que des services réels
    • Tests de base de données avec transactions, rollback et schémas jetables
    • pytest-cov, couverture de branches et seuil impossible à contourner
    • pytest-xdist, sélection de tests et respect d'un budget de temps
    • Marqueurs, séparation des tests lents et exécution du bon sous-ensemble en local
    • Intégrer pytest à la CI avec rapports, artefacts et contrôles obligatoires
    • Diagnostiquer l'instabilité : ordre des tests, état partagé, temps et concurrence
    • Règles de quarantaine, politique de réessai et cas où supprimer un test s'impose
    • Ajouter des tests de caractérisation autour du code hérité avant de le modifier
    • Convenir d'un standard de test d'équipe et d'une définition de terminé écrite

Supports fournis

  • Manuel de formation, exemples de code commentés et notes de référence
  • Environnement de laboratoire et dépôts de démarrage
  • Exercices, check-lists et modèles de code réutilisables
  • Certificat de participation 4D
  • Accompagnement technique après la formation

Options de formation

Les programmes peuvent être organisés en entreprise, en ligne ou dans un format hybride selon le calendrier, la localisation et les objectifs de vos équipes. Lorsqu'un certificat ou un examen externe est inclus, les règles et frais de certification restent soumis aux politiques de l'organisme certificateur, tandis que 4D assure la formation et l'accompagnement à la préparation.

Pourquoi choisir 4D

4D part de votre suite existante, ou de son absence, et mesure son temps d'exécution et sa fiabilité avant toute écriture. Les participants ajoutent des tests de caractérisation autour d'un module que l'équipe n'ose plus toucher, puis fixent un seuil de couverture et un budget de temps appliqués par leur propre CI dès la semaine suivante.

Contacter 4D

Planifiez le bon parcours de formation ou de conseil pour votre équipe.

Partagez quelques détails et 4D orientera votre demande vers la formation, le conseil, l’évaluation, Phoenix ou un programme sur mesure.