¿Hay alguna manera, dentro de espera, para ejecutar las pruebas unitarias (PyUnit módulo unittest) directamente?IDLE para ejecutar pruebas unitarias Python PyUnit
Lo pido porque tengo un breve módulo de prueba y cuando lo ejecuto con python mymodule.py desde el shell Cygwin me pasan todas las pruebas, pero cuando uso Run-> Run Module desde IDLE pasan las pruebas pero luego obtener una excepción (SystemExit: False).
Por ejemplo, aquí es un módulo de prueba de muestra para reproducir este:
#!/usr/bin/python
import unittest
class fooTests(unittest.TestCase):
def setUp(self):
self.foo = "bar"
def testDummyTest(self):
self.assertTrue(True)
def testDummyTestTwo(self):
self.assertEquals("foo", "foo")
def tearDown(self):
self.foo = None
if __name__ == '__main__':
unittest.main()
Cuando corro desde el shell de Cygwin con el pitón fooTests.py que produce:
$ python fooTests.py
..
----------------------------------------------------------------------
Ran 2 tests in 0.000s
OK
Pero cuando estoy editando fooTests.py dentro de IDLE y hago Ejecutar -> Ejecutar módulo, el nuevo Python Shell generado por IDLE produce:
>>> ================================ RESTART ================================
>>>
..
----------------------------------------------------------------------
Ran 2 tests in 0.031s
OK
Traceback (most recent call last):
File "C:\Some\path\info\I\shortened\fooTests.py", line 20, in <module>
unittest.main()
File "C:\Python26\lib\unittest.py", line 817, in __init__
self.runTests()
File "C:\Python26\lib\unittest.py", line 865, in runTests
sys.exit(not result.wasSuccessful())
SystemExit: False
>>>
¿Qué estoy haciendo mal, para producir este rastreo, y sobre todo cómo puedo solucionarlo de modo que pueda simplemente Run-> Ejecutar módulo (o F5) dentro de IDLE para ejecutar las pruebas unitarias de forma rápida?
(Esto sin duda debe ser una cuestión sencilla, pero mis intentos rápidos de averiguarlo han sido infructuosos.)
try/except puede consumir el código de retorno, por lo que puede causar problemas si el código se prueba en un entorno de CI. Sin embargo, la información es útil: el módulo unitest llama a sys.exit, cuando un shell interactivo quiere permanecer abierto (es decir, IDle, shell Python de Emacs, etc.), por lo que se muestra esta excepción. –