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.

404<br />

Techniques avancées<br />

QUATRIÈME PARTIE<br />

Définition des test cases<br />

Le module unittest fournit deux classes pour définir des test cases :<br />

TestCase : classe de base servant de socle pour toute classe implémentant des<br />

tests.<br />

FunctionTestCase : classe dérivée de TestCase qui permet d’encapsuler une<br />

fonction de test existante pour la rendre compatible avec le framework PyUnit.<br />

La classe TestCase<br />

Ces classes de définitions sont utilisées par le framework, par le biais d’un certain<br />

nombre de méthodes :<br />

setUp() : appelée avant l’exécution de chaque méthode de test, elle sert à initialiser<br />

le contexte d’exécution du test suivant. Cette méthode peut être surchargée<br />

par les classes dérivées pour définir le test fixture. Ne fait rien par défaut.<br />

run([result]) : lance la batterie de tests de la classe, en collectant toutes les<br />

méthodes de la classe dont le suffixe est « test » et en les exécutant dans l’ordre<br />

trouvé. Si result est fourni, il doit être un objet de type TestResult et est rempli<br />

avec les résultats des tests. Si result est omis ou à None, les résultats sont collectés<br />

dans un objet interne à la méthode mais ne seront pas renvoyés.<br />

Debug() : exécute les méthodes de test de la classe sans collecter les résultats. Ces<br />

appels se font directement, ce qui permet de récupérer d’éventuelles erreurs.<br />

TearDown() : appelée après l’exécution de chaque méthode de test (réussie ou<br />

non). Permet d’effectuer d’éventuels nettoyages (fermeture de connexion réseau,<br />

de fichier, etc.). Cette méthode est appelée uniquement en cas de succès de<br />

setUp(). Cette méthode ne fait rien par défaut et peut être surchargée dans les<br />

classes dérivées.<br />

Pour adapter TestCase, il suffit de créer une nouvelle classe dérivée, d’y ajouter des<br />

méthodes de test et si besoin d’y implémenter setUp() et tearDown().<br />

Module de test<br />

Chaque classe de test est écrite dans un module Python dédié, portant le nom du<br />

module testé, préfixé de test_ ou test.<br />

Si l’on utilise cette structure pour le test précédent du module cPickle, on obtient le<br />

module test_cPickle.py ci-contre.

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

Saved successfully!

Ooh no, something went wrong!