Hola, por fin me he decidido a aprender algo sobre unittest. Sip!, ahora. O sea que me podeis preguntar como demonios he estado programando hasta ahora sin unit tests. Pues de aquella manera...
Imagino que me surgiran muchas preguntas. Al menos hasta que encuentre un buen libro (no he tenido demasiada suerte hasta la fecha con esto) y realmente comprenda lo que estoy haciendo. La primera pregunta que tengo es de puro novato. Pido disculpas por adelantado por ello. Imaginemos que tengo una clase tal que $ cat /usr/lib/python2.6/site-packages/mypackage/mymodule.py class myclass: def f(self, ....): # codigo aqui x = self.g() # codigo aqui def g(self, ...) # codigo aqui Y quiero hacer una unittest para validad metodo f( ), pero sin llamar a g( ) He estado leyendo sobre Mocking y Patching, pero por lo que he entendido, sirven para "falsear" otras clases que se usan en el codigo. Pero no veo como usar la misma estrategia para falsear la propia clase que se esta verificando. He intentado algo de este estilo: class Test(unittest.TestCase): @patch('mypackage.mymodule.myclass') def test_f(self, mock_requests): mock_requests.g.return_value = None obj = myclass() obj.f() con la esperanza de que no se llamaria realmente al codigo g(), pero parece que no funciona y el metodo g() sigue siendo invocado. Imagino que una forma naive seria hacer algo tipo: class mytestingclass(myclass): def g(self...): return None y pasar los unittest sobre la nueva clase mytestingclass. ?Pero no es algo rupestre? Si alguien tiene un link a alguna web con ejemplos de como hacer Mock/Patch de la propia clase, falseando las llamadas a otros metodos desde aquel metodo que se esta validando, estare mas que agradecido. Un saludo, Jose (p.s. perdon por la ausencia de tildes) _______________________________________________ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/