Sto usando PyDev per lo sviluppo e il test unitario della mia applicazione Python. Per quanto riguarda il test delle unità, tutto funziona in modo ottimale per il fatto che i contenuti registrati su qualsiasi registrazione. Il logger non viene catturato dall'uscita "catturata" di PyDev.PyDev unittesting: come catturare il testo registrato su un logging.Logger in "Output catturato"
ho già avanti tutto collegato sullo standard output come questo:
import sys
logger = logging.getLogger()
logger.level = logging.DEBUG
logger.addHandler(logging.StreamHandler(sys.stdout))
Tuttavia la "Uscita catturati" non visualizza roba registrato al logger.
Ecco un esempio unittest-script: test.py
import sys
import unittest
import logging
logger = logging.getLogger()
logger.level = logging.DEBUG
logger.addHandler(logging.StreamHandler(sys.stdout))
class TestCase(unittest.TestCase):
def testSimpleMsg(self):
print("AA")
logging.getLogger().info("BB")
L'uscita della console è:
Finding files... done.
Importing test modules ... done.
testSimpleMsg (itf.lowlevel.tests.hl7.TestCase) ... AA
2011-09-19 16:48:00,755 - root - INFO - BB
BB
ok
----------------------------------------------------------------------
Ran 1 test in 0.001s
OK
Ma la USCITA catturata per il test è:
======================== CAPTURED OUTPUT =========================
AA
Qualcuno sa come catturare tutto è registrato su un logging.Logger
durante l'esecuzione di questo test?
Per completezza: ho bisogno di questo reindirizzamento per tutti i miei unit test. La soluzione migliore per me è aggiungere il nuovo gestore nel metodo setUp e rimuoverlo nel metodo tearDown. – gecco
Ottima risposta, ho [esteso] (http://stackoverflow.com/a/15969985/321973) a un '__metaclass__', quindi un setUp e' tearDown' inclusi includono automaticamente questo –
Perché è meglio aggiungere/rimuovere i gestori invece di tenerli al di fuori del test case? – mlt