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.

420<br />

Techniques avancées<br />

QUATRIÈME PARTIE<br />

REPORT_ONLY_FIRST_FAILURE<br />

Ce marqueur global permet de spécifier que pour chaque séquence, seule la première<br />

comparaison qui échoue est reportée. Le reste de la séquence est exécutée mais plus<br />

aucune erreur n’est reportée. Utilisé pour minimiser le retour des tests dès lors que<br />

des problèmes sont rencontrés.<br />

doctests dans un fichier texte séparé<br />

Des fichiers textes peuvent aussi être dédiés aux doctests : l’outil parcourt dans ce cas<br />

les lignes et exécute le contenu comme un seul et même docstring. Cette technique<br />

permet de réunir tous les tests dans un seul et même module, pour revenir à un principe<br />

similaire aux tests unitaires, mais avec toute la puissance narrative des doctests en plus.<br />

Les exemples de code s’alternent de commentaires, dans un flux continu et directement<br />

lisible. Au fur et à mesure de l’évolution du code, des exemples de plus en plus<br />

complexes et des cas particuliers s’ajoutent à ce fichier, qui devient une documentation<br />

complète à progression logique.<br />

L’exemple ci-dessous reprend l’exemple des tests sur cPickle, pour une écriture équivalente<br />

en doctests.<br />

test_cPickle.txt<br />

le module cPickle permet de sauvegarder des<br />

objets sur le système de fichiers ou dans tout autre flux.<br />

>>> import cPickle<br />

Prenons l'exemple d'une classe classique<br />

et une instance de cette classe<br />

que nous allons sauvegarder<br />

>>> from UserDict import UserDict<br />

>>> o = UserDict()<br />

>>> o['a'] = 1<br />

>>> o['b'] = 2<br />

Pour sauver l'objet, cPickle prend en paramètre<br />

un objet de type file, ouvert par nos soins<br />

>>> fic = open('/home/tziade/pickled.bin', 'w')<br />

La fonction dump se charge de la sérialisation<br />

>>> cPickle.dump(o, fic)<br />

fermons le fichier

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

Saved successfully!

Ooh no, something went wrong!