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.

426<br />

Techniques avancées<br />

QUATRIÈME PARTIE<br />

>>>>>> def methode():<br />

1: c = ''<br />

101: for i in range(100):<br />

100: c = c + methode2(i)<br />

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

>>>>>> traced = trace.Trace(ignoredirs=[sys.prefix,<br />

sys.exec_prefix,], trace=0,<br />

>>>>>> count=1)<br />

>>>>>> traced.run('methode()')<br />

>>>>>> r = traced.results()<br />

>>>>>> r.write_results(show_missing=True)<br />

>>>>>> results = open('tracer.cover', 'r')<br />

>>>>>> print ''.join(results.readlines())<br />

>>>>>> results.close()<br />

trace préfixe les lignes non exécutées du code par >>>>>> et par le nombre d’appels<br />

pour les autres. Les lignes de la section __main__ ne sont pas à prendre en compte<br />

car non tracées. En termes d’interprétation, ce test permet de déceler que le cas x ==<br />

123 n’est jamais visité par le code appelant.<br />

D’autres implémentations existent en dehors de la bibliothèque standard, comme le<br />

module coverage.py de Gareth Rees, du projet Perforce Defect Tracking Integration<br />

(http://www.ravenbrook.com/project/p4dti/). Le principe est identique mais cette version<br />

est beaucoup plus intéressante dans le cadre des tests unitaires car les informations<br />

collectées sont regroupées et affichées dans un tableau où chaque module utilisé<br />

dans les tests se voit attribuer un pourcentage de couverture.<br />

Résultats de coverage.py<br />

[tziade@Tarek tests]$ coverage.py -x tester.py<br />

Parcours du répertoire<br />

.......<br />

7 module(s) de test trouvé(s)<br />

[..]<br />

Lancement de 4 test(s)...<br />

---------------------------------------------------------------------test<br />

l'E/S de cPickle ... ok<br />

test le monkey patching ... ok<br />

test_patch2 (test_imaplib.SMTPTestCase) ... ok<br />

test_patchR (test_imaplib.SMTPTestCase) ... ok<br />

----------------------------------------------------------------------<br />

Ran 4 tests in 0.003s

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

Saved successfully!

Ooh no, something went wrong!