[Python-es] pregunta de nova sobre unittest

Yamila Moreno Suárez yamila.ms en gmail.com
Vie Mayo 20 13:14:17 EDT 2016


Si tienes que mockear varios métodos lo más fácil es poner varios "with"
atendiendo a pequeñas cosas:

- cada sentencia sangrada (indentada) respecto a la anterior
- el código que pruebas sangrado respecto a todos los  bloques with
- asegúrate de que cada block tiene un alias distinto

Por cierto en la docu oficial además explican
patch.object('my_module.MyClass') para mockear clases con métodos en lugar
de funciones.

Suerte!
El 20 may. 2016 17:10, "Jose Caballero" <jcaballero.hep en gmail.com> escribió:

> creo recordar que lo intente cuando abri el hilo. No recuerdo muy
> bien, pero creo que no supe como hacerlo para 2 o mas metodos. Lo
> intentare de nuevo.
>
> PS: perdon por las [no] tildes
>
> El día 19 de mayo de 2016, 16:13, Yamila Moreno Suárez
> <yamila.ms en gmail.com> escribió:
> > Buenas! En lugar de usar decoradores, prueba a usar el context manager:
> >
> > def test_my_method():
> >     with patch('module.to.patch') as mock_1:
> >         mock_1.return_value = xxx
> >         result = my_method()
> >         assert mock_1.calle_count == 1
> >         assert result == lo-que-sea
> >
> > Suerte!
> >
> > Y si ves que es un poco lío, no desesperes, es un lío de cuidado. Ánimo
> :-)
> >
> > El 13 may. 2016 2:34, "Jose Caballero" <jcaballero.hep en gmail.com>
> escribió:
> >>
> >> Hola de nuevo,
> >>
> >> he encontrado una manera de hacerlo (a parte de crear myfakeclass).
> >> Mas o menos funciona, aunque lo veo algo "error-prone":
> >>
> >>
> >>     class Test(unittest.TestCase):
> >>
> >>         @patch('mypackage.mymodule.myclass.g')
> >>         @patch('mypackage.mymodule.myclass.h')
> >>         def test_f(self, mock_requests1, mock_requests2):
> >>             mock_requests1.return_value = None
> >>             mock_requests2.return_value = None
> >>             obj = myclass()
> >>             obj.f()
> >>
> >>
> >> mock_requests1 es el argumento asociado a
> >> @patch('mypackage.mymodule.myclass.g')
> >> mock_requests2 es el argumento asociado a
> >> @patch('mypackage.mymodule.myclass.h')
> >>
> >> Lo que no me gusta es que si quito uno de los decoradores, hay que
> >> cambiar la lista de argumentos de test_f( )
> >> Pero por lo demas, parece que funciona.
> >> _______________________________________________
> >> Python-es mailing list
> >> Python-es en python.org
> >> https://mail.python.org/mailman/listinfo/python-es
> >> FAQ: http://python-es-faq.wikidot.com/
> >
> >
> > _______________________________________________
> > Python-es mailing list
> > Python-es en python.org
> > https://mail.python.org/mailman/listinfo/python-es
> > FAQ: http://python-es-faq.wikidot.com/
> >
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20160520/4ce55293/attachment.html>


Más información sobre la lista de distribución Python-es