testeo con mocks introducción al - osl.ugr.es³n-al-testeo... · testeo con mocks ester ramos...

41
Introducción al testeo con Mocks Ester Ramos Carmona

Upload: others

Post on 31-Jul-2020

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: testeo con Mocks Introducción al - osl.ugr.es³n-al-testeo... · testeo con Mocks Ester Ramos Carmona. Antes de empezar. Pausa para la publicidad ... Creando dobles Un mock crea

Introducción al testeo con Mocks

Ester Ramos Carmona

Page 2: testeo con Mocks Introducción al - osl.ugr.es³n-al-testeo... · testeo con Mocks Ester Ramos Carmona. Antes de empezar. Pausa para la publicidad ... Creando dobles Un mock crea

Antes de empezar

Page 3: testeo con Mocks Introducción al - osl.ugr.es³n-al-testeo... · testeo con Mocks Ester Ramos Carmona. Antes de empezar. Pausa para la publicidad ... Creando dobles Un mock crea

Pausa para la publicidad

Python 2 deja de tener soporte en 2020.

Venid con nosotros a esta nueva* era de Python 3.

*La palabra “nueva” puede, en realidad, significar lo opuesto

Page 4: testeo con Mocks Introducción al - osl.ugr.es³n-al-testeo... · testeo con Mocks Ester Ramos Carmona. Antes de empezar. Pausa para la publicidad ... Creando dobles Un mock crea

¿Por qué usar Mocks?

Page 5: testeo con Mocks Introducción al - osl.ugr.es³n-al-testeo... · testeo con Mocks Ester Ramos Carmona. Antes de empezar. Pausa para la publicidad ... Creando dobles Un mock crea

¿Imposible de testear?

Funciones con I/O

Page 6: testeo con Mocks Introducción al - osl.ugr.es³n-al-testeo... · testeo con Mocks Ester Ramos Carmona. Antes de empezar. Pausa para la publicidad ... Creando dobles Un mock crea

¿Imposible de testear?

Funciones que requieren conexiones

Page 7: testeo con Mocks Introducción al - osl.ugr.es³n-al-testeo... · testeo con Mocks Ester Ramos Carmona. Antes de empezar. Pausa para la publicidad ... Creando dobles Un mock crea

¿Qué son los Mocks?

Page 8: testeo con Mocks Introducción al - osl.ugr.es³n-al-testeo... · testeo con Mocks Ester Ramos Carmona. Antes de empezar. Pausa para la publicidad ... Creando dobles Un mock crea

Creando dobles

Un mock crea un objeto que parece igual al original pero nosotros controlamos lo que hace.

Page 9: testeo con Mocks Introducción al - osl.ugr.es³n-al-testeo... · testeo con Mocks Ester Ramos Carmona. Antes de empezar. Pausa para la publicidad ... Creando dobles Un mock crea

Controlando el comportamiento

Page 10: testeo con Mocks Introducción al - osl.ugr.es³n-al-testeo... · testeo con Mocks Ester Ramos Carmona. Antes de empezar. Pausa para la publicidad ... Creando dobles Un mock crea

Controlando el comportamiento

Page 11: testeo con Mocks Introducción al - osl.ugr.es³n-al-testeo... · testeo con Mocks Ester Ramos Carmona. Antes de empezar. Pausa para la publicidad ... Creando dobles Un mock crea

Controlando el comportamiento

Page 12: testeo con Mocks Introducción al - osl.ugr.es³n-al-testeo... · testeo con Mocks Ester Ramos Carmona. Antes de empezar. Pausa para la publicidad ... Creando dobles Un mock crea

Controlando el comportamiento

Page 13: testeo con Mocks Introducción al - osl.ugr.es³n-al-testeo... · testeo con Mocks Ester Ramos Carmona. Antes de empezar. Pausa para la publicidad ... Creando dobles Un mock crea

Controlando el comportamiento

Page 14: testeo con Mocks Introducción al - osl.ugr.es³n-al-testeo... · testeo con Mocks Ester Ramos Carmona. Antes de empezar. Pausa para la publicidad ... Creando dobles Un mock crea

Patch es tu amigoSi el objeto está dentro de la función

Cambia tu objetivo por un nuevo objeto.

Por defecto este nuevo objeto será un MagicMock.

Muy Importante: El objetivo debe ser importable desde donde estás llamando a patch.

Page 15: testeo con Mocks Introducción al - osl.ugr.es³n-al-testeo... · testeo con Mocks Ester Ramos Carmona. Antes de empezar. Pausa para la publicidad ... Creando dobles Un mock crea
Page 16: testeo con Mocks Introducción al - osl.ugr.es³n-al-testeo... · testeo con Mocks Ester Ramos Carmona. Antes de empezar. Pausa para la publicidad ... Creando dobles Un mock crea

Patch

Page 17: testeo con Mocks Introducción al - osl.ugr.es³n-al-testeo... · testeo con Mocks Ester Ramos Carmona. Antes de empezar. Pausa para la publicidad ... Creando dobles Un mock crea

Patch

Page 18: testeo con Mocks Introducción al - osl.ugr.es³n-al-testeo... · testeo con Mocks Ester Ramos Carmona. Antes de empezar. Pausa para la publicidad ... Creando dobles Un mock crea

Patch

Page 19: testeo con Mocks Introducción al - osl.ugr.es³n-al-testeo... · testeo con Mocks Ester Ramos Carmona. Antes de empezar. Pausa para la publicidad ... Creando dobles Un mock crea

Patch: modos de usoDecorador

Page 20: testeo con Mocks Introducción al - osl.ugr.es³n-al-testeo... · testeo con Mocks Ester Ramos Carmona. Antes de empezar. Pausa para la publicidad ... Creando dobles Un mock crea

Patch: modos de usoContext Manager

Page 21: testeo con Mocks Introducción al - osl.ugr.es³n-al-testeo... · testeo con Mocks Ester Ramos Carmona. Antes de empezar. Pausa para la publicidad ... Creando dobles Un mock crea

Side effects

Para testear excepciones. Cuidado con excepciones muy generales.

Page 22: testeo con Mocks Introducción al - osl.ugr.es³n-al-testeo... · testeo con Mocks Ester Ramos Carmona. Antes de empezar. Pausa para la publicidad ... Creando dobles Un mock crea

Side effects

Si la función llama a tu mock varias veces.

Page 23: testeo con Mocks Introducción al - osl.ugr.es³n-al-testeo... · testeo con Mocks Ester Ramos Carmona. Antes de empezar. Pausa para la publicidad ... Creando dobles Un mock crea

Side effects

Si la función llama a tu mock varias veces.

Page 24: testeo con Mocks Introducción al - osl.ugr.es³n-al-testeo... · testeo con Mocks Ester Ramos Carmona. Antes de empezar. Pausa para la publicidad ... Creando dobles Un mock crea

Side effects

Si la función llama a tu mock varias veces.

Page 25: testeo con Mocks Introducción al - osl.ugr.es³n-al-testeo... · testeo con Mocks Ester Ramos Carmona. Antes de empezar. Pausa para la publicidad ... Creando dobles Un mock crea

Si la función llama a tu mock varias veces.

Side effects

Page 26: testeo con Mocks Introducción al - osl.ugr.es³n-al-testeo... · testeo con Mocks Ester Ramos Carmona. Antes de empezar. Pausa para la publicidad ... Creando dobles Un mock crea

Inyección de dependencias

Es mejor si tu objetivo a mockear está entre las dependencias.

No tienes que saber cómo está implementado el objeto

Page 27: testeo con Mocks Introducción al - osl.ugr.es³n-al-testeo... · testeo con Mocks Ester Ramos Carmona. Antes de empezar. Pausa para la publicidad ... Creando dobles Un mock crea

Inyección de dependencias

Patch

Mock

Es mejor si tu objetivo a mockear está entre las dependencias.

No tienes que saber cómo está implementado el objeto

Page 28: testeo con Mocks Introducción al - osl.ugr.es³n-al-testeo... · testeo con Mocks Ester Ramos Carmona. Antes de empezar. Pausa para la publicidad ... Creando dobles Un mock crea

Inyección de dependencias

Hacer patch implica que tienes que saber lo que hay dentro de la función.

Hacer mock de una dependencia te permite no tener que saber lo que está pasando dentro de la función.

Page 29: testeo con Mocks Introducción al - osl.ugr.es³n-al-testeo... · testeo con Mocks Ester Ramos Carmona. Antes de empezar. Pausa para la publicidad ... Creando dobles Un mock crea

Inyección de dependencias

Hacer patch implica que tienes que saber lo que hay dentro de la función.

Hacer mock de una dependencia te permite no tener que saber lo que está pasando dentro de la función.

Page 30: testeo con Mocks Introducción al - osl.ugr.es³n-al-testeo... · testeo con Mocks Ester Ramos Carmona. Antes de empezar. Pausa para la publicidad ... Creando dobles Un mock crea

Asserts

También puedes comprobar si tu mock o uno de sus métodos ha sido llamado.

Page 31: testeo con Mocks Introducción al - osl.ugr.es³n-al-testeo... · testeo con Mocks Ester Ramos Carmona. Antes de empezar. Pausa para la publicidad ... Creando dobles Un mock crea

Asserts

Comprobar que la llamada sólo se ha hecho una vez.

Page 32: testeo con Mocks Introducción al - osl.ugr.es³n-al-testeo... · testeo con Mocks Ester Ramos Carmona. Antes de empezar. Pausa para la publicidad ... Creando dobles Un mock crea

Asserts

O que la llamada se ha hecho con unos argumentos específicos.

Page 33: testeo con Mocks Introducción al - osl.ugr.es³n-al-testeo... · testeo con Mocks Ester Ramos Carmona. Antes de empezar. Pausa para la publicidad ... Creando dobles Un mock crea

Asserts

Si el mock se llama varias veces.

Page 34: testeo con Mocks Introducción al - osl.ugr.es³n-al-testeo... · testeo con Mocks Ester Ramos Carmona. Antes de empezar. Pausa para la publicidad ... Creando dobles Un mock crea

Spec y Autospec

Crear un método y llamar a assert se hacen de la misma manera con Mock.

Page 35: testeo con Mocks Introducción al - osl.ugr.es³n-al-testeo... · testeo con Mocks Ester Ramos Carmona. Antes de empezar. Pausa para la publicidad ... Creando dobles Un mock crea

Spec y Autospec

Usando spec el mock sólo podrá acceder a atributos que existan en la clase real.

Page 36: testeo con Mocks Introducción al - osl.ugr.es³n-al-testeo... · testeo con Mocks Ester Ramos Carmona. Antes de empezar. Pausa para la publicidad ... Creando dobles Un mock crea

Spec y Autospec

Usando spec el mock sólo podrá acceder a atributos que existan en la clase real.

Page 37: testeo con Mocks Introducción al - osl.ugr.es³n-al-testeo... · testeo con Mocks Ester Ramos Carmona. Antes de empezar. Pausa para la publicidad ... Creando dobles Un mock crea

Spec y Autospec

Cuando parcheas puedes usar autospec y lo hará automáticamente

Page 38: testeo con Mocks Introducción al - osl.ugr.es³n-al-testeo... · testeo con Mocks Ester Ramos Carmona. Antes de empezar. Pausa para la publicidad ... Creando dobles Un mock crea

Spec y Autospec

Cuando parcheas puedes usar autospec y lo hará automáticamente

Page 39: testeo con Mocks Introducción al - osl.ugr.es³n-al-testeo... · testeo con Mocks Ester Ramos Carmona. Antes de empezar. Pausa para la publicidad ... Creando dobles Un mock crea

Mock vs MagicMock

MagicMock te permite usar métodos mágicos sin tener que configurarlos.

Pero a veces quieres que tu objeto devuelva un error si se intenta acceder a él.

Page 40: testeo con Mocks Introducción al - osl.ugr.es³n-al-testeo... · testeo con Mocks Ester Ramos Carmona. Antes de empezar. Pausa para la publicidad ... Creando dobles Un mock crea

Mock vs MagicMock

Page 41: testeo con Mocks Introducción al - osl.ugr.es³n-al-testeo... · testeo con Mocks Ester Ramos Carmona. Antes de empezar. Pausa para la publicidad ... Creando dobles Un mock crea

Gracias¿Preguntas?