[Python-es] Sobre UnitTest
Hola, buenas tardes: ¿Alguien con experiencia en unittest? Estoy codificando un test y me gustaría darlo como bueno si se lanza una cierta excepción. Para eso tengo que usar assertRaises() pero no sé porqué, no funciona. Alguna referencia? Un saludo -- Manuel J. Recena Soto * www.manuelrecena.com[/blog] * www.linkedin.com/in/recena * rec...@gmail.com * +34 609710280 (ES) ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
Re: [Python-es] Sobre UnitTest
2010/10/7 Manuel Jesús Recena Soto : > Hola, buenas tardes: > > ¿Alguien con experiencia en unittest? > Estoy codificando un test y me gustaría darlo como bueno si se lanza > una cierta excepción. Para eso tengo que usar assertRaises() pero no > sé porqué, no funciona. Alguna referencia? > Se usa asi: self.assertRaises(Exception, metodo_sin_parantesis, valor1, valor2, valor3) donde def metodo_sin_parantesis(param1, param2, param3): pass es decir, en el assertRaises va la funcion, pero sin los parentesis y los valores. El assertRaises lo va a ejecutar. Saludos, TZ ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
Re: [Python-es] Sobre UnitTest
Si incluyeras algo de código de ejemplo sería más fácil responderte ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
Re: [Python-es] Sobre UnitTest
2010/10/7 Tomas Zulberti : > 2010/10/7 Manuel Jesús Recena Soto : >> Hola, buenas tardes: >> >> ¿Alguien con experiencia en unittest? >> Estoy codificando un test y me gustaría darlo como bueno si se lanza >> una cierta excepción. Para eso tengo que usar assertRaises() pero no >> sé porqué, no funciona. Alguna referencia? >> > > Se usa asi: > self.assertRaises(Exception, metodo_sin_parantesis, valor1, valor2, valor3) > > donde > def metodo_sin_parantesis(param1, param2, param3): > pass > > es decir, en el assertRaises va la funcion, pero sin los parentesis y > los valores. El assertRaises lo va a ejecutar. > Estilo tradicional (extraido de la doc stdlib) {{{ #!python class TestSequenceFunctions(unittest.TestCase): def setUp(self): self.seq = range(10) def test_shuffle(self): # make sure the shuffled sequence does not lose any elements random.shuffle(self.seq) self.seq.sort() self.assertEqual(self.seq, range(10)) def test_choice(self): element = random.choice(self.seq) self.assertTrue(element in self.seq) def test_sample(self): self.assertRaises(ValueError, random.sample, self.seq, 20) for element in random.sample(self.seq, 5): self.assertTrue(element in self.seq) }}} En versiones recientes también es possible utilizar esta función como context manager (extraido del blog de Michael Foord [2]_ ) e.g. {{{ #!python as context manager with self.assertRaises(TypeError): add(2, '3') # test message with a regex msg_re = "^You shouldn't Foo a Bar$" with self.assertRaisesRegexp(FooBarError, msg_re): foo_the_bar() # access the exception object with self.assertRaises(TypeError) as cm: do_something() exception = cm.exception self.assertEqual(exception.error_code, 3) }}} También es posible utilizar una versión modificada (TracRpcTestCase.failUnlessRaises) [3]_ que permite seguir el estilo tradicional, y al mismo realizar verificaciones sobre el objeto (i.e. excepción) que se ha lanzado. PD: El chivo que ven ahí [2]_ tiene poderes psíquicos sobre todos aquellos que escriban pruebas en Python [4]_ [5]_ [6]_ [7]_ . Tenganlo muy en cuenta, y sacrifiquen unos cuantos pollos antes de escribir sus pruebas, sino 80% asegurado a que no serán satisfactorias ... :D Sigan los hilos más abajo y se reirán un poco ... ;o) .. [1] No hay 1 (por qué siempre tiene que haber 1 ? ;o) .. [2] Coming changes to unittest in Python 2.7 & 3.2 (http://www.voidspace.org.uk/python/articles/unittest2.shtml#assertraises) .. [3] TracRpcTestCase.failUnlessRaises (http://bitbucket.org/osimons/trac-rpc/src/fa00f1619d65/trunk/tracrpc/tests/__init__.py) .. [4] [TIP] [OT] Goats of PyCon (http://lists.idyll.org/pipermail/testing-in-python/2010-February/002691.html) .. [5] [TIP] [OT] The Testing Goat's World Tour (http://lists.idyll.org/pipermail/testing-in-python/2010-March/002897.html) .. [6] Goats of PyCon - The Real Story (http://www.swordstyle.com/blog2/?p=1822) .. [7] TIP] [OT] Goats of PyCon - Doug Hellmann' comment -- :D (http://lists.idyll.org/pipermail/testing-in-python/2010-February/002695.html) -- Regards, Olemis. Blog ES: http://simelo-es.blogspot.com/ Blog EN: http://simelo-en.blogspot.com/ Featured article: ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
Re: [Python-es] Sobre UnitTest
Muchísimas a gracias a todos por las respuestas. Finalmente, buscando ejemplos encontré alguien que añadía una nota diciendo "sin incluir los paréntesis". No había prestado suficiente atención a los ejemplos. Era para una prueba unitaria que tengo que incluir en cmislib: def testGetObjectParentsWithinRootFolder(self): '''Gets all object parents of a root folder''' rootFolder = self._repo.getRootFolder() self.assertRaises(NotSupportedException, rootFolder.getObjectParents) De nuevo, gracias. El día 7 de octubre de 2010 20:43, Tomas Zulberti escribió: > 2010/10/7 Manuel Jesús Recena Soto : >> Hola, buenas tardes: >> >> ¿Alguien con experiencia en unittest? >> Estoy codificando un test y me gustaría darlo como bueno si se lanza >> una cierta excepción. Para eso tengo que usar assertRaises() pero no >> sé porqué, no funciona. Alguna referencia? >> > > Se usa asi: > self.assertRaises(Exception, metodo_sin_parantesis, valor1, valor2, valor3) > > donde > def metodo_sin_parantesis(param1, param2, param3): > pass > > > es decir, en el assertRaises va la funcion, pero sin los parentesis y > los valores. El assertRaises lo va a ejecutar. > > Saludos, > TZ > ___ > Python-es mailing list > Python-es@python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > -- Manuel J. Recena Soto * www.manuelrecena.com[/blog] * www.linkedin.com/in/recena * rec...@gmail.com * +34 609710280 (ES) ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
Re: [Python-es] Sobre UnitTest
2010/10/9 Manuel Jesús Recena Soto : > [...] > > Era para una prueba unitaria que tengo que incluir en cmislib: > En cmislib o en el plugin de Trac ? -- Regards, Olemis. Blog ES: http://simelo-es.blogspot.com/ Blog EN: http://simelo-en.blogspot.com/ Featured article: ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/