PaliSkill
Python avancé

Leçon 10 / 10 — Chapitre 8: Structurer et tester un projet

Cas pratique : un script en ligne de commande complet et testé

Cette dernière leçon combine argparse, logging, et des fonctions de test avec assert, dans un petit script complet.

import argparse
import logging

logging.basicConfig(level=logging.INFO)

def calculer_remise(prix, pourcentage):
    if pourcentage < 0 or pourcentage > 100:
        raise ValueError("Pourcentage invalide")
    return prix - (prix * pourcentage / 100)

def tester_calculer_remise():
    assert calculer_remise(100, 10) == 90.0
    assert calculer_remise(50, 0) == 50.0
    try:
        calculer_remise(100, 150)
        assert False, "Une erreur aurait du etre levee"
    except ValueError:
        pass
    logging.info("Tests de calculer_remise reussis")

if __name__ == "__main__":
    tester_calculer_remise()

    analyseur = argparse.ArgumentParser()
    analyseur.add_argument("prix", type=float)
    analyseur.add_argument("--remise", type=float, default=0)
    arguments = analyseur.parse_args()

    resultat = calculer_remise(arguments.prix, arguments.remise)
    print(f"Prix final : {resultat} $")

Ce que fait chaque partie :

  • tester_calculer_remise() (vu dans ce chapitre) vérifie la fonction sur un cas normal, un cas à zéro, et un cas limite invalide, avant même que le script ne traite quoi que ce soit.
  • if __name__ == "__main__": garantit que ce bloc ne s'exécute que si le fichier est lancé directement (pas importé comme module ailleurs) — une convention standard pour un script destiné à être exécuté en ligne de commande.
  • argparse (vu dans ce chapitre) lit prix (obligatoire) et --remise (optionnel, défaut 0) depuis la ligne de commande.

Lancé avec python script.py 100 --remise 20, ce script exécute d'abord ses tests, affiche INFO:root:Tests de calculer_remise reussis, puis Prix final : 80.0 $.

À vous de jouer : ajoutez un troisième test à tester_calculer_remise(), pour un prix de 0, et vérifiez qu'il passe correctement.

🔒

Continuez ce module

Débloquez les leçons restantes ainsi que la certification finale.

2 500 XOF / 3,81 € / 4,15 $

Débloquez les 87 leçons restantes de ce module

Votre paiement est vérifié avant l'activation de l'accès