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.

390<br />

Techniques avancées<br />

QUATRIÈME PARTIE<br />

Construction d’un test unitaire<br />

Prenons l’exemple d’une fonction en charge de calculer une moyenne.<br />

Cette fonction prend en paramètre un nombre indéfini de valeurs entières et renvoie<br />

la moyenne, basée sur une division entière.<br />

Les premiers tests qui peuvent être effectués sur cette fonction sont de valider qu’elle renvoie<br />

bien les résultats attendus, en proposant quelques cas basiques qui viennent à l’esprit.<br />

Écrivons ces tests dans un fichier Python, avec la directive assert(), qui lève une<br />

exception si l’assertion passée en paramètre est fausse.<br />

Use cases pour la nouvelle fonction<br />

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

# -*- coding: utf8 -*-<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 />

Ces tests échoueront bien sûr dès la première ligne car la fonction n’existe pas encore,<br />

mais guident le développeur pour la conception.<br />

Première implémentation<br />

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

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

def moyenne(*nombres):<br />

taille = len(nombres)<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 />

Cette première version remplit plutôt bien ses objectifs puisqu’elle valide les trois cas<br />

proposés.

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

Saved successfully!

Ooh no, something went wrong!