← TDD avec Python : le cycle rouge-vert-refactor

Cycle TDD & pytest — antisèche

Le cycle

  1. Rouge — écrire un test qui échoue, pour un comportement qui n’existe pas encore. Le voir échouer pour la bonne raison (pas une erreur de syntaxe).
  2. Vert — écrire le code le plus simple possible qui fait passer le test. Tricher est permis (valeur en dur) si ça fait passer le test — le prochain test forcera à généraliser.
  3. Refactor — nettoyer le code (et les tests) sans changer le comportement, tests toujours au vert.

Règle d’or : jamais plus d’un test qui échoue à la fois.

Style classiciste (rappel)

pytest — le strict minimum

# fichier: test_compte.py
def test_nouveau_compte_a_solde_zero():
    compte = CompteBancaire()
    assert compte.solde == 0
ÉlémentRègle
Fichierstest_*.py ou *_test.py
Fonctionsdef test_...():
Assertionsassert nu — pytest réécrit l’assertion pour un message détaillé
Lancerpytest, pytest -v (verbeux), pytest -x (stop au 1er échec)

Exception attendue :

import pytest

def test_retrait_refuse_si_solde_insuffisant():
    compte = CompteBancaire()
    with pytest.raises(SoldeInsuffisant):
        compte.retirer(10)
Piège : un rouge pour la mauvaise raison

Un test qui échoue à cause d’une faute de frappe ou d’un import manquant n’est pas un vrai rouge TDD — corrige-le avant de continuer. De même, si plusieurs tests sont rouges en même temps, c’est qu’on est allé trop vite : reviens à un seul test rouge à la fois.

🗂 Voir la leçon : Le cycle rouge-vert-refactor.