17.12.2012 Views

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

392<br />

Techniques avancées<br />

QUATRIÈME PARTIE<br />

Seconde version<br />

#!/usr/bin/python<br />

# -*- coding: utf8 -*-<br />

def moyenne(*nombres):<br />

taille = len(nombres)<br />

if taille == 0:<br />

return None<br />

somme = 0<br />

for nombre in nombres:<br />

somme += nombre<br />

return somme / taille<br />

# cas simples<br />

assert moyenne(5) == 5<br />

assert moyenne(5, 8, 9) == 7<br />

assert moyenne(5, 8, 9, 78, 43) == 28<br />

# aucun paramètre en entrée<br />

assert moyenne() == None<br />

Non-régression<br />

L’accumulation de tests au fur et à mesure de l’évolution du code permet d’assurer la<br />

non-régression de ce dernier. Si tous les tests sont bien rejoués à chaque modification,<br />

la nouvelle version du code est assurée de continuer à faire fonctionner tous les<br />

use cases précédents.<br />

Toujours sur notre exemple de moyenne, notre utilisateur a remarqué que la fonction<br />

levait bien une erreur de type TypeError lorsque l’un des paramètres n’était pas un<br />

entier, mais sans spécifier lequel. Il souhaiterait que le message d’erreur soit plus<br />

explicite, en indiquant le paramètre qui pose problème.<br />

Un test est ajouté pour proposer un message d’erreur plus explicite.<br />

Message TypeError explicite<br />

#!/usr/bin/python<br />

# -*- coding: utf8 -*-<br />

def moyenne(*nombres):<br />

taille = len(nombres)<br />

if taille == 0:<br />

return None<br />

somme = 0<br />

for nombre in nombres:<br />

somme += nombre<br />

return somme / taille

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!