Adloun

NSI (terminale) · Chapitre 10 · Application directe du cours

Problème — Module de validation et tests unitaires

Modularité, mise au point et tests · niveau 2

Énoncé

Problème — Module de validation et tests unitaires.

Concevoir un petit module validation.py regroupant des fonctions de contrôle de saisie : est_email(s) (vérifie la présence d'un seul @ et d'un point après), est_age_valide(n) (entier entre 0 et 120). Documenter chaque fonction et écrire une fonction de tests unitaires regroupant tous les cas.

Corrigé


# fichier validation.py
def est_email(s):
    """Renvoie True si s ressemble a une adresse email simple.

    Critere : exactement un '@' et au moins un '.' apres le '@'.
    """
    if s.count("@") != 1:
        return False
    partie_locale, domaine = s.split("@")
    return len(partie_locale) > 0 and "." in domaine

def est_age_valide(n):
    """Renvoie True si n est un age plausible (entier de 0 a 120)."""
    return isinstance(n, int) and 0 <= n <= 120

def test_validation():
    # Tests de est_email
    assert est_email("alice@exemple.fr") == True
    assert est_email("bob@site.com") == True
    assert est_email("pasdarobase.fr") == False    # pas de @
    assert est_email("a@@b.fr") == False            # deux @
    assert est_email("a@sansdomaine") == False      # pas de point
    assert est_email("@exemple.fr") == False        # partie locale vide
    # Tests de est_age_valide
    assert est_age_valide(0) == True                # borne basse
    assert est_age_valide(120) == True              # borne haute
    assert est_age_valide(25) == True
    assert est_age_valide(-1) == False
    assert est_age_valide(121) == False
    assert est_age_valide("30") == False            # mauvais type
    print("test_validation : tous les tests passent.")

test_validation()

Ce module illustre la démarche complète : spécification par docstring, fonctions courtes et indépendantes, et jeu de tests couvrant cas généraux, cas limites et cas d'erreur.

100 % gratuit

Essaie le suivant avec le tuteur

Faire l'exercice suivant avec le tuteur

Sans compte : le cours, le premier QCM, 2 minutes de podcast et de vidéo et un exercice avec le tuteur. Pour tout le reste : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant avec le tuteur →