← 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) litprix(obligatoire) et--remise(optionnel, défaut0) 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