testeo con Mocks Introducción al - osl.ugr.es³n-al-testeo... · testeo con Mocks Ester Ramos...
Transcript of testeo con Mocks Introducción al - osl.ugr.es³n-al-testeo... · testeo con Mocks Ester Ramos...
![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](https://reader033.fdocuments.ec/reader033/viewer/2022052519/5f83e771be3f62081540631d/html5/thumbnails/1.jpg)
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](https://reader033.fdocuments.ec/reader033/viewer/2022052519/5f83e771be3f62081540631d/html5/thumbnails/2.jpg)
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](https://reader033.fdocuments.ec/reader033/viewer/2022052519/5f83e771be3f62081540631d/html5/thumbnails/3.jpg)
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](https://reader033.fdocuments.ec/reader033/viewer/2022052519/5f83e771be3f62081540631d/html5/thumbnails/4.jpg)
¿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](https://reader033.fdocuments.ec/reader033/viewer/2022052519/5f83e771be3f62081540631d/html5/thumbnails/5.jpg)
¿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](https://reader033.fdocuments.ec/reader033/viewer/2022052519/5f83e771be3f62081540631d/html5/thumbnails/6.jpg)
¿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](https://reader033.fdocuments.ec/reader033/viewer/2022052519/5f83e771be3f62081540631d/html5/thumbnails/7.jpg)
¿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](https://reader033.fdocuments.ec/reader033/viewer/2022052519/5f83e771be3f62081540631d/html5/thumbnails/8.jpg)
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](https://reader033.fdocuments.ec/reader033/viewer/2022052519/5f83e771be3f62081540631d/html5/thumbnails/9.jpg)
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](https://reader033.fdocuments.ec/reader033/viewer/2022052519/5f83e771be3f62081540631d/html5/thumbnails/10.jpg)
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](https://reader033.fdocuments.ec/reader033/viewer/2022052519/5f83e771be3f62081540631d/html5/thumbnails/11.jpg)
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](https://reader033.fdocuments.ec/reader033/viewer/2022052519/5f83e771be3f62081540631d/html5/thumbnails/12.jpg)
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](https://reader033.fdocuments.ec/reader033/viewer/2022052519/5f83e771be3f62081540631d/html5/thumbnails/13.jpg)
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](https://reader033.fdocuments.ec/reader033/viewer/2022052519/5f83e771be3f62081540631d/html5/thumbnails/14.jpg)
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](https://reader033.fdocuments.ec/reader033/viewer/2022052519/5f83e771be3f62081540631d/html5/thumbnails/15.jpg)
![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](https://reader033.fdocuments.ec/reader033/viewer/2022052519/5f83e771be3f62081540631d/html5/thumbnails/16.jpg)
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](https://reader033.fdocuments.ec/reader033/viewer/2022052519/5f83e771be3f62081540631d/html5/thumbnails/17.jpg)
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](https://reader033.fdocuments.ec/reader033/viewer/2022052519/5f83e771be3f62081540631d/html5/thumbnails/18.jpg)
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](https://reader033.fdocuments.ec/reader033/viewer/2022052519/5f83e771be3f62081540631d/html5/thumbnails/19.jpg)
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](https://reader033.fdocuments.ec/reader033/viewer/2022052519/5f83e771be3f62081540631d/html5/thumbnails/20.jpg)
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](https://reader033.fdocuments.ec/reader033/viewer/2022052519/5f83e771be3f62081540631d/html5/thumbnails/21.jpg)
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](https://reader033.fdocuments.ec/reader033/viewer/2022052519/5f83e771be3f62081540631d/html5/thumbnails/22.jpg)
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](https://reader033.fdocuments.ec/reader033/viewer/2022052519/5f83e771be3f62081540631d/html5/thumbnails/23.jpg)
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](https://reader033.fdocuments.ec/reader033/viewer/2022052519/5f83e771be3f62081540631d/html5/thumbnails/24.jpg)
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](https://reader033.fdocuments.ec/reader033/viewer/2022052519/5f83e771be3f62081540631d/html5/thumbnails/25.jpg)
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](https://reader033.fdocuments.ec/reader033/viewer/2022052519/5f83e771be3f62081540631d/html5/thumbnails/26.jpg)
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](https://reader033.fdocuments.ec/reader033/viewer/2022052519/5f83e771be3f62081540631d/html5/thumbnails/27.jpg)
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](https://reader033.fdocuments.ec/reader033/viewer/2022052519/5f83e771be3f62081540631d/html5/thumbnails/28.jpg)
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](https://reader033.fdocuments.ec/reader033/viewer/2022052519/5f83e771be3f62081540631d/html5/thumbnails/29.jpg)
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](https://reader033.fdocuments.ec/reader033/viewer/2022052519/5f83e771be3f62081540631d/html5/thumbnails/30.jpg)
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](https://reader033.fdocuments.ec/reader033/viewer/2022052519/5f83e771be3f62081540631d/html5/thumbnails/31.jpg)
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](https://reader033.fdocuments.ec/reader033/viewer/2022052519/5f83e771be3f62081540631d/html5/thumbnails/32.jpg)
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](https://reader033.fdocuments.ec/reader033/viewer/2022052519/5f83e771be3f62081540631d/html5/thumbnails/33.jpg)
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](https://reader033.fdocuments.ec/reader033/viewer/2022052519/5f83e771be3f62081540631d/html5/thumbnails/34.jpg)
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](https://reader033.fdocuments.ec/reader033/viewer/2022052519/5f83e771be3f62081540631d/html5/thumbnails/35.jpg)
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](https://reader033.fdocuments.ec/reader033/viewer/2022052519/5f83e771be3f62081540631d/html5/thumbnails/36.jpg)
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](https://reader033.fdocuments.ec/reader033/viewer/2022052519/5f83e771be3f62081540631d/html5/thumbnails/37.jpg)
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](https://reader033.fdocuments.ec/reader033/viewer/2022052519/5f83e771be3f62081540631d/html5/thumbnails/38.jpg)
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](https://reader033.fdocuments.ec/reader033/viewer/2022052519/5f83e771be3f62081540631d/html5/thumbnails/39.jpg)
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](https://reader033.fdocuments.ec/reader033/viewer/2022052519/5f83e771be3f62081540631d/html5/thumbnails/40.jpg)
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](https://reader033.fdocuments.ec/reader033/viewer/2022052519/5f83e771be3f62081540631d/html5/thumbnails/41.jpg)
Gracias¿Preguntas?