28.01.2015 Views

Tutorial Python - Starship

Tutorial Python - Starship

Tutorial Python - Starship

SHOW MORE
SHOW LESS

Create successful ePaper yourself

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

10.11 Controlul calităţii programului<br />

O abordare a programării de performanţă este aceea când pentru fiecare funcţie se sciu, în faza de proiectare, teste<br />

ce vor fi rulate pe perioada întregului proces de dezvoltare a aplicaţiei.<br />

Modulul doctest ofera un instrument de scanare a unui modul si de verificare a bunei funcţionări a testului<br />

implantat in docstring-ul programului. Implantarea testului în docstring este uşoară.În docstring se va inscrie<br />

o apelare a funcţie împreună cu rezultatul execuţiei. Această implementare oferă utilizatorului un exemplu de<br />

utilizare a funcţiei si permite modulului doctest să se verifice conformitatea codului cu descrierea din documentaţie<br />

:<br />

def average(values):<br />

"""Computes the arithmetic mean of a list of numbers.<br />

>>> print average([20, 30, 70])<br />

40.0<br />

"""<br />

return sum(values, 0.0) / len(values)<br />

import doctest<br />

doctest.testmod()<br />

# verificarea automata a testului din documentatia functiei<br />

Cu modulul unittest nu se lucrează mai uşor decât cu modulul doctest, dar el oferă posibilitatea scierii<br />

unui program intr–un fişier cu un set complet de teste.<br />

import unittest<br />

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

def test_average(self):<br />

self.assertEqual(average([20, 30, 70]), 40.0)<br />

self.assertEqual(round(average([1, 5, 7]), 1), 4.3)<br />

self.assertRaises(ZeroDivisionError, average, [])<br />

self.assertRaises(TypeError, average, 20, 30, 70)<br />

unittest.main() # Calling from the command line invokes all tests<br />

10.12 <strong>Python</strong> oferit "la cheie"<br />

Limbajul <strong>Python</strong> este un limbaj oferit "la cheie", lucru dovedit de complexitatea şi robusteţea întregii distribuţii.<br />

De exemplu :<br />

• Modulele xmlrpclib şi SimpleXMLRPCServer fac implementări de proceduri apelabile de la distanţă<br />

de către aproape orice aplicaţie. În ciuda numelui nu este necesară cunoaşterea sau utilizarea XML.<br />

• Pachetul email este o bibliotecă pentru prelucrarea mesajelor de email, incluzând şi mesajele tipice MIM<br />

şi RFC 2822. Spre deosebire de smptlib şi poplib, care, de fapt, transmit şi recepţionează mesajele,<br />

pachetul email oferă un set complet de instrumente necesare la constituirea şi decodarea structurilor comlexe<br />

ale mesajelor (inclusiv ataşare de fişiere - attachments) şi pentru implementarea protocoalelor de codare<br />

Internet şi a headerelor.<br />

• Pachetele xml.dom şi xml.sax ofera un suport puternic pentru analizarea unui text scris XML, un format<br />

foarte răspândit. În acelaşi fel modulul csv suportă scrierea şi citirea într-un format de bază de date comun.<br />

Împreuna aceste module şi pachete simplifică într-un mod elegant schimbarea de date între aplicaţiile <strong>Python</strong><br />

si alte instrumente.<br />

10.11. Controlul calităţii programului 73

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

Saved successfully!

Ooh no, something went wrong!