nose, per testejadors amb mala memòria
Supòs que ja ningú dubta de la importància dels test unitaris a l'hora de programar. Els tests ens permeten provar que el que feim és correcte i repetir-ho tantes vegades com volguem i de manera controlada.
Els tests són una part important dels mecanismes de refactorització d'aplicacions, ja que ens asseguren que l'aplicació funciona de la mateixa manera abans i després de refactoritzar.
Els test, però, tenen un problema, fins ara els test unitaris s'han d'escriure d'una determinada manera, recordar les llibreries que has d'importar, com fer un testsuite. Per mi això significa anar a la documentació del pyUnit cada vegada o copiar un test anterior. És el que té dedicar-se a gestionar projectes, que no pots tenir al cap coses que sols fas servir de tant en tant, ja que sols dediques una quantitat mínima d'hores a programar.
Davant aquesta necessitat de fer tests sense tenir que preocupar-nos de la fontaneria intrínseca del pyUnit una de les millors opcions que hi ha és la llibreria nose. Vull dir, si sé que nose és perfecte per la feina (acudit fàcil).
Per fer un test típic basta recordar el següent:
- la sintaxis dels
assert
de Python:assert condicio, missatge
. - que gairebé qualsevol funció o classes que contengui
test
oTest
separat amb quió baix és una funció testejable. - Que un test falla quan l'
assert
falla - Que fent un
nosetest -v nom
executarem els tests en mode verbose del paquet o funció que li indiquem
La documentació és molt més àmplia, indica quan capturar la sortida, com fer l'equivalent al setup
i al teardown
dels pyUnit
, capturar excepcions, etc. Però el 80% de vegades aquestes quatre coses que indic seran més que suficients.
La llibreria nose ens permet escriure els tests de la manera que estam tots acostumats quan escrivim codi per provar una funció, en nivell de formalització i cerimònia comparat amb els unittests clàssics és mínima, i per tant afavoreix que poguem convertir el codi de proves informal a codi per a la realització de test unitaris amb tant sols reanomenar la classe o funció que hem escrit, i moltes vegades ni tan sols això, ja que, no sé vosaltres, però jo ja tenia la mania de anomenar test a les funcions de prova :)