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.

398<br />

Techniques avancées<br />

QUATRIÈME PARTIE<br />

Erreur version 1<br />

[tziade@Tarek Desktop]$ python test_imaplib.py<br />

Traceback (most recent call last):<br />

File "test_imaplib.py", line 13, in ?<br />

sender = smtplib.SMTP('mon.serveur.smtp')<br />

TypeError: this constructor takes no arguments<br />

Il est nécessaire de rajouter un constructeur à notre fake, le plus large possible, pour<br />

couvrir tout type d’initialisation. Reprendre comme modèle le constructeur de la<br />

classe réelle est le choix le plus précis, mais un modèle générique suffit amplement.<br />

Version 2<br />

class FakeSMTP:<br />

def __init__(*args, **kw):<br />

pass<br />

L’exécution repousse l’erreur un peu plus loin dans la mécanique d’envoi d’e-mails.<br />

Test version 2<br />

[tziade@Tarek Desktop]$ python test_imaplib.py<br />

Traceback (most recent call last):<br />

File "test_imaplib.py", line 17, in ?<br />

sender.sendmail('bill@hou.com', destinataires, message)<br />

AttributeError: FakeSMTP instance has no attribute 'sendmail'<br />

La fonction sendmail() n’a pas besoin de renvoyer de résultat, sa simulation est donc<br />

aussi simple que le constructeur. Même observation pour quit().<br />

Version 3<br />

class FakeSMTP:<br />

def __init__(*args, **kw):<br />

pass<br />

def sendmail(*args, **kw):<br />

pass<br />

def quit(self):<br />

pass<br />

Le test est à présent validé et le fake fonctionnel pour l’envoi d’e-mails.

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

Saved successfully!

Ooh no, something went wrong!