17.12.2012 Views

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

484<br />

Techniques avancées<br />

QUATRIÈME PARTIE<br />

Le deuxième paramètre optionnel, local_pystones permet de conserver d’un test à<br />

l’autre le calcul des pystones, qui dure quelques secondes, pour accélérer l’exécution<br />

des tests.<br />

L’insertion de ce decorator ajoute, lorsque les tests sont lancés, des contrôles sur les<br />

durées d’exécution.<br />

Dans l’exemple ci-dessous, la classe de test effectue trois tests, dont deux sont<br />

mesurés.<br />

Exemple d’utilisation<br />

import unittest<br />

import md5<br />

mstone = mesure_pystone()<br />

class MesTests(unittest.TestCase):<br />

def __init__(self, name):<br />

unittest.TestCase.__init__(self, name)<br />

@timedtest(6*kPs, mstone)<br />

def test_critical1(self):<br />

for i in range(100000):<br />

md5.new('ok').hexdigest()<br />

@timedtest(1, mstone)<br />

def test_critical2(self):<br />

time.sleep(mstone[0]/mstone[1])<br />

@timedtest(1*kPs, mstone)<br />

def test_critical3(self):<br />

a =''<br />

for i in range(50000):<br />

a = a + 'x' * 200<br />

def test_lesscrtitical(self):<br />

time.sleep(0.1)<br />

suite = unittest.makeSuite(MesTests)<br />

unittest.TextTestRunner().run(suite)<br />

[...]<br />

$ python perftest.py<br />

..F.

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

Saved successfully!

Ooh no, something went wrong!