Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import logging
- import os
- import sys
- import unittest
- log = logging.basicConfig(
- format="%(asctime)s [%(levelname)s] %(message)s"
- )
- log = logging.getLogger("log")
- here = os.path.dirname(os.path.abspath(__file__))
- filename = os.path.join(here, 'apply.log')
- log.level = logging.DEBUG
- stream_handler = logging.StreamHandler(sys.stdout)
- log.addHandler(stream_handler)
- file_handler = logging.FileHandler(filename, encoding='utf8')
- log.addHandler(file_handler)
- log.debug("ready")
- class LogThisTestCase(type):
- def __new__(cls, name, bases, dct):
- # if the TestCase already provides setUp, wrap it
- if 'setUp' in dct:
- setUp = dct['setUp']
- else:
- setUp = lambda self: None
- def wrappedSetUp(self):
- # for hdlr in self.logger.handlers:
- # self.logger.removeHandler(hdlr)
- self.hdlr = logging.StreamHandler(sys.stdout)
- self.logger.addHandler(self.hdlr)
- setUp(self)
- dct['setUp'] = wrappedSetUp
- # same for tearDown
- if 'tearDown' in dct:
- tearDown = dct['tearDown']
- else:
- tearDown = lambda self: None
- def wrappedTearDown(self):
- tearDown(self)
- self.logger.removeHandler(self.hdlr)
- dct['tearDown'] = wrappedTearDown
- # return the class instance with the replaced setUp/tearDown
- return type.__new__(cls, name, bases, dct)
- class LoggedTestCase(unittest.TestCase):
- __metaclass__ = LogThisTestCase
- logger = logging.getLogger("log")
- logger.setLevel(logging.DEBUG) # or whatever you prefer
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement