Ho un test python in cui voglio testare se la registrazione funziona correttamente. Ad esempio, ho una funzione che crea un utente e alla fine la registrazione scrive per registrare il file della risposta.Connessione Python al gestore StringIO
logger = logging.getLogger('mylogger')
logger.setLevel(logging.DEBUG)
handler = logging.handlers.WatchedFileHandler('mylogfile.log')
formatter = logging.Formatter('%(asctime)s: %(message)s',
'%d/%b/%Y:%H:%M:%S %z')
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.info('Some log text')
Nel mio caso di test voglio inviare l'output del registro a StringIO.
class MyTest(unittest.TestCase):
def setUp(self):
stream = StringIO()
self.handler = logging.StreamHandler(stream)
log = logging.getLogger('mylogger')
log.removeHandler(log.handlers[0])
log.addHandler(self.handler)
def tearDown(self):
log = logging.getLogger('mylogger')
log.removeHandler(self.handler)
self.handler.close()
Il problema è che non sono sicuro di come dovrei eseguire il test se il mio registratore funziona.
spiace, ma questo potrebbe essere solo al di là di me, ma non ti basta fare 'stream.getvalue()'? – macduff
related: [PyDev unittesting: come catturare il testo registrato su un logging.Logger in "Captured Output"] (http://stackoverflow.com/q/7472863/321973) –