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.

408<br />

Techniques avancées<br />

QUATRIÈME PARTIE<br />

Ce script se base sur la classe TextTestRunner d’unittest, instanciée lors de l’appel<br />

de la fonction de lancements de tests main().<br />

Cette classe est une implémentation par défaut d’une campagne de test, qui collecte<br />

dans un objet TestResult interne tous les résultats des tests et qui les affiche sur la<br />

sortie d’erreur standard.<br />

Une instance de classe TextTestRunner récupère des TestSuite et les exécute dans<br />

un TestSuite global, par le biais de la méthode run().<br />

TestSuite est une classe basique regroupant des objets de type TestCase, fournis à la<br />

construction, ou ajoutés par le biais des méthodes addTest() ou addTests(). Cette<br />

classe possède aussi une méthode run().<br />

Ces deux classes vont permettre au script d’exécuter les tests contenus dans les différents<br />

modules.<br />

Organisation des modules de tests<br />

Pour faciliter la tâche du script de tests, tous les modules de tests de l’application doivent<br />

nécessairement :<br />

avoir un nom avec un préfixe test et un suffixe .py ;<br />

se trouver dans un dossier nommé tests, réservé à ce type de scripts. Il peut y<br />

avoir plusieurs dossiers tests dans l’arborescence de l’application ;<br />

contenir une fonction globale get_test_class(), qui renvoie la classe de type<br />

TestCase à utiliser. Cette fonction peut aussi renvoyer une séquence de plusieurs<br />

classes à utiliser.<br />

Script de lancement des tests<br />

Notre script de lancement de tests prend en paramètre un répertoire et effectue une<br />

recherche dans tous les répertoires tests de l’arborescence. Un TestSuite est<br />

fabriqué pour chaque module de test rencontré dans ces répertoires. Le script lance<br />

ensuite ces tests par le biais d’un TestRunner.<br />

Script tester.py<br />

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

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

sys<br />

from os import getcwd, walk, chdir<br />

import os.path<br />

from optparse import OptionParser<br />

import unittest<br />

from warnings import warn

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

Saved successfully!

Ooh no, something went wrong!