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