17.12.2012 Views

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

# 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 />

# message d'erreur de type plus explicite<br />

try:<br />

moyenne(5, 'u', 8)<br />

except TypeError, e:<br />

assert str(e) == "'u' n'est pas un entier"<br />

<strong>Programmation</strong> dirigée par les tests<br />

CHAPITRE 12<br />

Le développeur modifie ensuite la fonction pour gérer ce nouveau cas.<br />

Troisième 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 />

if not isinstance(nombre, int):<br />

raise TypeError("'%s' n'est pas un entier" % str(nombre))<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 />

# message d'erreur de type plus explicite<br />

try:<br />

moyenne(5, 'u', 8)<br />

except TypeError, e:<br />

assert str(e) == "'u' n'est pas un entier"<br />

Si la batterie de tests est à nouveau exécutée pour valider la modification, le premier<br />

test ne fonctionne plus.<br />

393

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

Saved successfully!

Ooh no, something went wrong!