python macos unit-testing cprofile

python - ¿Por qué el módulo cProfile no funciona con unittest?



macos unit-testing (1)

Yo usaría el módulo cProfile para perfilar mis pruebas unitarias. Pero cuando corro

python -mcProfile mytest.py

Tengo ''Ran 0 pruebas en 0.000s''. Aquí está el código fuente de mytest.py

import unittest class TestBasic(unittest.TestCase): def testFoo(self): assert True == True if __name__ == ''__main__'': unittest.main()

También he probado con otras pruebas de unidad más complejas. Siempre tengo ''Ran 0 tests'' si lo ejecuto con cProfile. Por favor ayuda.

ACTUALIZACIÓN: Mi sistema operativo es MacOS 10.7 con python incorporado 2.7. El mismo código funciona correctamente en ubuntu.


Tienes que inicializar el cProfiler en el Constructor de la prueba, y usar los datos del perfil en el destructor. Lo uso así:

from pstats import Stats import unittest class TestSplayTree(unittest.TestCase): """a simple test""" def setUp(self): """init each test""" self.testtree = SplayTree (1000000) self.pr = cProfile.Profile() self.pr.enable() print "/n<<<---" def tearDown(self): """finish any test""" p = Stats (self.pr) p.strip_dirs() p.sort_stats (''cumtime'') p.print_stats () print "/n--->>>" def xtest1 (self): pass

En caso de que una prueba espere la entrada, uno debe llamar a self.pr.disable() antes de esa llamada y volver a habilitarla después.