[Python-es] Sobre UnitTest

2010-10-07 Thread 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?

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-07 Thread 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.

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

2010-10-07 Thread Juan Ignacio
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-07 Thread Olemis Lang (Simelix)
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

2010-10-09 Thread Manuel Jesús Recena Soto
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-26 Thread Olemis Lang (Simelix)
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/