Advertisement
Guest User

Untitled

a guest
Dec 7th, 2021
27
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.64 KB | None | 0 0
  1. import logging
  2. import os
  3. import sys
  4. import unittest
  5.  
  6. log = logging.basicConfig(
  7.     format="%(asctime)s [%(levelname)s] %(message)s"
  8.     )
  9. log = logging.getLogger("log")
  10. here = os.path.dirname(os.path.abspath(__file__))
  11. filename = os.path.join(here, 'apply.log')
  12. log.level = logging.DEBUG
  13. stream_handler = logging.StreamHandler(sys.stdout)
  14. log.addHandler(stream_handler)
  15. file_handler = logging.FileHandler(filename, encoding='utf8')
  16. log.addHandler(file_handler)
  17. log.debug("ready")
  18.  
  19.  
  20.  
  21. class LogThisTestCase(type):
  22.     def __new__(cls, name, bases, dct):
  23.         # if the TestCase already provides setUp, wrap it
  24.         if 'setUp' in dct:
  25.             setUp = dct['setUp']
  26.         else:
  27.             setUp = lambda self: None
  28.  
  29.         def wrappedSetUp(self):
  30.             # for hdlr in self.logger.handlers:
  31.             #    self.logger.removeHandler(hdlr)
  32.             self.hdlr = logging.StreamHandler(sys.stdout)
  33.             self.logger.addHandler(self.hdlr)
  34.             setUp(self)
  35.         dct['setUp'] = wrappedSetUp
  36.  
  37.         # same for tearDown
  38.         if 'tearDown' in dct:
  39.             tearDown = dct['tearDown']
  40.         else:
  41.             tearDown = lambda self: None
  42.  
  43.         def wrappedTearDown(self):
  44.             tearDown(self)
  45.             self.logger.removeHandler(self.hdlr)
  46.         dct['tearDown'] = wrappedTearDown
  47.  
  48.         # return the class instance with the replaced setUp/tearDown
  49.         return type.__new__(cls, name, bases, dct)
  50.  
  51.  
  52. class LoggedTestCase(unittest.TestCase):
  53.     __metaclass__ = LogThisTestCase
  54.     logger = logging.getLogger("log")
  55.     logger.setLevel(logging.DEBUG) # or whatever you prefer
  56.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement