13. Unit Tests
class Calculator(object):
def add(self, a, b):
return a + b
def sub(self, a, b):
return a - b
def multiply(self, a, b):
return a * b
def divide(self, a, b):
return a / b
def square(self, a):
return a * a
18. La importancia
Los tests unitarios:
Fa
itan
cil
io
amb
el c
Simpl
if
ican
la
integ
racio
n
Aunque no lo crean, aceleran el desarrollo
19. La importancia
Los tests unitarios:
Fa
itan
cil
io
amb
el c
Simpl
if
ican
la
integ
racio
n
Aunque no lo crean, aceleran el desarrollo
d
nalida
io
an func
Valid
20. La importancia
Los tests unitarios:
Fa
itan
cil
io
amb
el c
Simpl
if
ican
la
integ
racio
n
Aunque no lo crean, aceleran el desarrollo
iones
s
regre
n
Evita
d
nalida
io
an func
Valid
21. La importancia
Los tests unitarios:
Fa
itan
cil
io
amb
el c
Simpl
if
ican
la
integ
racio
n
Aunque no lo crean, aceleran el desarrollo
iones
s
regre
n
Evita
Verifican interfaces
d
nalida
io
an func
Valid
22. La importancia
Los tests unitarios:
Fa
itan
cil
io
amb
el c
Simpl
if
ican
la
integ
racio
n
Aunque no lo crean, aceleran el desarrollo
iones
s
regre
n
Evita
Verifican interfaces
d
nalida
io
an func
Valid
Testean bugs dedicadamente
23. La importancia
Los tests unitarios:
Fa
itan
cil
io
amb
el c
Simpl
if
ican
la
integ
racio
n
Aunque no lo crean, aceleran el desarrollo
iones
s
regre
n
Evita
Verifican interfaces
d
nalida
io
an func
Valid
Testean bugs dedicadamente
Fuerza la modularizacion
24. La importancia
Los tests unitarios:
Fa
itan
cil
io
amb
el c
Simpl
if
Facilitan la migracion
ican
la
integ
racio
n
Aunque no lo crean, aceleran el desarrollo
iones
s
regre
n
Evita
Verifican interfaces
d
nalida
io
an func
Valid
Testean bugs dedicadamente
Fuerza la modularizacion
25. La importancia
Los tests unitarios:
Fa
itan
cil
io
amb
el c
Simpl
if
Facilitan la migracion
ican
la
integ
racio
n
Aunque no lo crean, aceleran el desarrollo
iones
s
regre
n
Evita
d
nalida
io
an func
Valid
Son documentacion que nunca pasa de moda
Verifican interfaces
Testean bugs dedicadamente
Fuerza la modularizacion
26. La importancia
al
iempo de testeo manu
Reducen el t
Simpl
ifica
io
n la
amb
integ
el c
racio
an
n
d
cilit
Facilitan la migracion
Fa
nalida
io
an func
Valid
Aunque no lo crean, aceleran el desarrollo
Los tests unitarios:
iones
s
regre
n
Evita
Son documentacion que nunca pasa de moda
Verifican interfaces
Testean bugs dedicadamente
Fuerza la modularizacion
27. La importancia
al
iempo de testeo manu
Reducen el t
Simpl
ifica
io
n la
amb
integ
el c
racio
an
n
d
cilit
Facilitan la migracion
Fa
nalida
io
an func
Valid
Aunque no lo crean, aceleran el desarrollo
Los tests unitarios:
Son documentacion que nunca pasa de moda
nes
io
egres
itan r
Testean bugs dedicadamente
Ev
Permiten la integracion continua
Verifican interfaces
Fuerza la modularizacion
28. La importancia
al
iempo de testeo manu
Reducen el t
Simpl
ifica
io
n la
amb
integ
el c
racio
an
n
d
cilit
Facilitan la migracion
Fa
nalida
io
an func
Valid
Aunque no lo crean, aceleran el desarrollo
Los tests unitarios:
ing
gg
ebu
ed
dd
ida
es
nec
l a Son documentacion que nunca pasa de moda
n
enes
deuecio
e r gr s
Rn
Testean bugs dedicadamente
Evita
Permiten la integracion continua
Verifican interfaces
Fuerza la modularizacion
29. Limitaciones
Los tests unitarios:
No van a asegurar un programa libre de bugs
● Solo testean la funcionalidad de las unidades en si
● No pueden testear algoritmos no-deterministicos
● Tambien pueden tener bugs
● Necesitan mantenerse actualizados
●
30. Frameworks
Lo basico que un framework xUnit nos debe ofrecer
Test Runner
● Test Case
● Test Suites
● Test Fixtures
● Test Result Formatter
● Assertions
●
Y...
31. Frameworks
Lo basico que un framework xUnit nos debe ofrecer
●
Test Execution
setup();
...
/*
* Cuerpo de la prueba
*/
...
teardown();
35. Mock and Roll
Usamos mocks para:
Aislar la unidad que
testeamos
● Escenarios dificiles de
reproducir
● Error de red, DB,
Filesystem
● Algoritmos nodeterministicos
● Fecha/Hora
● Ambientes costosos
de crear
● Objetos que todavia
no existen
●
36. Mock and Roll
Lo que un framework de mock basico deberia tener:
Crear Mocks
● Definirles stub methods
● Definirles expectativas
● Verificar las expectativas
●
48. Autor: Sergio Orbe
sergioo@exo.com.ar
Ejemplo de código:
https://github.com/reyiyo/vending-machine
Licencia Creative Commons Reconocimiento – CompartirIgual (by-sa):
Se permite el uso comercial de la obra y de las posibles obras
derivadas, la distribución de las cuales se debe hacer con una licencia
igual a la que regula la obra original.