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....@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...@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....@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@python.org > >> https://mail.python.org/mailman/listinfo/python-es > >> FAQ: http://python-es-faq.wikidot.com/ > > > > > > _______________________________________________ > > Python-es mailing list > > Python-es@python.org > > https://mail.python.org/mailman/listinfo/python-es > > FAQ: http://python-es-faq.wikidot.com/ > > > _______________________________________________ > Python-es mailing list > Python-es@python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ >
_______________________________________________ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/