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.

410<br />

Techniques avancées<br />

QUATRIÈME PARTIE<br />

if module_path notin sys.path:<br />

sys.path.append(module_path)<br />

added_paths.append(module_path)<br />

m = __import__(module[1])<br />

if 'get_test_class' in m.__dict__:<br />

class_type = m.get_test_class()<br />

test_suite = unittest.TestSuite((<br />

unittest.makeSuite(class_type), ))<br />

suite.addTest(test_suite)<br />

else:<br />

warn("%s n'a pas de fonction get_test_class" % module[0])<br />

nb_test_case = suite.countTestCases()<br />

if nb_test_case == 0:<br />

print('Aucun test.')<br />

sys.exit(2)<br />

print('\nLancement de %d test(s)...' % nb_test_case)<br />

_print_line()<br />

campagne = unittest.TextTestRunner(verbosity=2)<br />

campagne.run(suite)<br />

for added_path in added_paths:<br />

sys.path.remove(added_path)<br />

if __name__ == '__main__':<br />

parser = OptionParser()<br />

parser.usage = 'tester [-r repertoire]'<br />

for option in options:<br />

param = option['noms']<br />

del option['noms']<br />

parser.add_option(*param, **option)<br />

options, arguments = parser.parse_args()<br />

sys.argv[:] = arguments<br />

main(options, arguments, parser)<br />

Quelques fonctionnalités annexes ont été ajoutées :<br />

Le programme exécute un éventuel script contexte.py s’il est présent dans le<br />

répertoire tests en cours. Ce script peut servir à mettre en place un environnement<br />

de test global sans avoir à le répéter dans chaque module de test. Il peut<br />

contenir entre autres des manipulations du chemin de recherche de l’interpréteur,<br />

ou des variables d’environnement.<br />

Un warning est affiché pour chaque module de test qui n’a pas de fonction<br />

get_test_class().

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

Saved successfully!

Ooh no, something went wrong!