[pyar] mocking
Elvio Rogelio Toccalino
elviotoccalino en gmail.com
Mar Oct 29 10:52:55 ART 2013
Mis casos son muy parecidos a los que describe Daniel, respecto de lo que
dijo antes Angel. Uso los mocks como implementaciones alternativas, pero:
flexibles, cheap&dirty, y NO las shipeo con el producto, sino con el test
suite (ok, es parte del producto :P).
El 29 de octubre de 2013 09:48, Daniel Moisset
<dmoisset en machinalis.com>escribió:
> 2013/10/29 Angel Java Lopez <ajlopez2000 en gmail.com>
>
>> Permissooo... me entrometo en el thread ;-)
>>
>> Cual es el caso de uso de un mock en Python?
>>
>>
> El mismo que en otros lados, tenes que testear una capa "alta" de forma
> independiente de las capas "bajas", y no tenes como controlar las
> dependencias.
>
> Si bien el *objetivo* es el mismo, el *mecanismo* de mocking en python es
> bastante diferente a otros lenguajes; no construis clases MockA, MockB
> MockC para sustituir clases A, B, C, sino que mock te da un objeto
> universal, que simplemente lo instancias y el comportamiento default muchas
> veces sirve (implementa cualquier metodo que le pidas como un NOP, y
> registra todas las llamadas); si el default no te sirve lo podes configrar
> un poquito (en runtime), por ejemplo para que hacer que un metodo devuelva
> algun valor predefinido o levante una excepcion (y muy ocasionalmente,
> ejecute codigo que le das)
>
>
>
>> Yo, en general, en otras tecnologias no programo mocks, solo digamos en
>> casos extremos.
>>
>
> Bueno, en python nunca "programas" un mock, en el mismo sentido que no
> "programas" un datetime. Lo usas.
>
>
>> Programo implementaciones alternativas que entrego en cada iteracion.
>> Ejemplo, si tengo que consumir un web service que me da el tipo de cambio,
>> escribo codigo un proveedor de tipo de cambio, que simplemente me de el
>> tipo de cambio fijo. Luego, cuando el caso de uso lo amerite, le pongo un
>> proveedor de tipo de cambio que lo lea de un json. Luego de una tabla por
>> dia o un documento mongodb, luego algun dia, voy contra el web service
>> real, luego de haber escrito un spike para ver si me puedo conectar. Aclaro
>> que trato de seguir el flujo de trabajo de TDD, no solamente testing.
>>
>
> Bueno, todos esos casos los podes sustituir con una instancia de mock con
> muy muy poco laburo.
>
>
>> Si recuerdo, un mock luego se puede interrogar para ver si cumplio con
>> las expectativas de llamadas, no es simplemente un stub para salir del
>> paso. Pero tampoco eso he necesitado hasta ahora, yo diria, lo he
>> necesitado casi nunca. Tal vez en JavaScript, tengo algun stub. En C# y en
>> Java, no he usado mocks en anios. En Ruby apenas programo, pero lo que
>> hice, lo hice sin mocks que recuerde.
>>
>> Como es en Python? Se necesitan mocks?
>>
>
> Para testear si, a veces vienen bien. Sobre todo para testear interaccion
> con componentes externos, con cosas hechas a nivel modulo (que son pseudo
> "globales" y necesitas alguna forma de sustituirlos)
>
> Saludos,
>
> D.
>
>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20131029/ef1694d1/attachment.html>
More information about the pyar
mailing list