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.

Outils<br />

unittest<br />

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

CHAPITRE 12<br />

Python fournit dans la bibliothèque standard un framework de tests pour faciliter<br />

l’écriture et l’utilisation des tests unitaires. Comme pour la plupart des langages<br />

actuels, ce framework est inspiré des travaux de Kent Beck, qui a conçu un premier<br />

outil sous Smalltalk, porté par la suite sous Java, sous le nom de JUnit.<br />

La version Python, PyUnit, offre les fonctionnalités standards d’un outil de test, à<br />

savoir :<br />

préparation d’un contexte d’exécution particulier pour une série de tests, appelé<br />

test fixture.<br />

création de séries de tests, comprenant un test fixture et des tests : les test cases.<br />

création de collections de test cases, les test suites.<br />

lancement des test suites et affichage des résultats, par le test runner.<br />

Cette implémentation est faite dans le module unittest de Python.<br />

Certains puristes trouvent que cette implémentation n’est pas très pythonique, car les<br />

API sont calquées sur l’outil Java, mais elle s’avère très souple à l’usage et a le mérite<br />

de faciliter l’utilisation des tests unitaires aux développeurs venant d’autres langages.<br />

Un deuxième outil plus original et plus spécifique à Python permet d’insérer des tests<br />

directement dans le code source. Ces tests, insérés dans les commentaires, sont collectés<br />

par l’outil et exécutés. Ce mode de fonctionnement permet d’illustrer in situ le<br />

code avec des exemples d’utilisation.<br />

Enfin, un outil supplémentaire, non présent dans la bibliothèque standard, permet<br />

de scanner le code pour repérer les lignes qui ne sont pas couvertes par les tests.<br />

Le module unittest fournit toutes les composantes nécessaires à la création des<br />

tests, à savoir :<br />

des classes pour la définition des test cases ;<br />

une classe pour la collecte des résultats ;<br />

une classe pour définir des test suites ;<br />

des utilitaires de lancement des tests.<br />

En utilisation classique, les seules étapes nécessaires à l’utilisation d’unittest sont :<br />

la définition des tests cases ;<br />

l’organisation et l’utilisation des modules de tests.<br />

403

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

Saved successfully!

Ooh no, something went wrong!