Как отправить все методы assert
в файл журнала с помощью регистратора? Выход обычно идет к std.err
. Возможно, необходимо создать обработчик, но мне не удалось это сделать.
Вот простой пример кода:
#!/usr/bin/python3
import unittest
import logging
import logging.config
# create logger
logging.config.fileConfig('example.conf')
logger = logging.getLogger('examplelogger')
logger.info("test 1")
class TestUpper(unittest.TestCase):
def test_upper(self):
self.assertEqual('fooo'.upper(), 'FOO')
if __name__ == '__main__':
unittest.main()
и файл конфигурации регистратора, который я использовал:
[loggers]
keys=root,examplelogger
[handlers]
keys=consoleHandler,fileHandler
[formatters]
keys=simpleFormatter
[logger_root]
level=DEBUG
handlers=consoleHandler,fileHandler
[logger_examplelogger]
level=DEBUG
handlers=fileHandler
qualname=examplelogger
propagate=0
[handler_fileHandler]
class=FileHandler
level=DEBUG
formatter=simpleFormatter
args=('example.log', 'w')
[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=simpleFormatter
args=(sys.stdout,)
[formatter_simpleFormatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
datefmt=%Y-%m-%d %H:%M:%S
Результат выполнения кода представлен ниже. Я хотел бы сохранить его (также) в файле журнала.
./example.py
F
======================================================================
FAIL: test_upper (__main__.TestUpper)
----------------------------------------------------------------------
Traceback (most recent call last):
File "./example.py", line 16, in test_upper
self.assertEqual('fooo'.upper(), 'FOO')
AssertionError: 'FOOO' != 'FOO'
- FOOO
? -
+ FOO
----------------------------------------------------------------------
Ran 1 test in 0.000s
FAILED (failures=1)