I am using nosetests test.py to run unit tests:
import unittest import logging class Test(unittest.TestCase): def test_pass(self): logging.getLogger('do_not_want').info('HIDE THIS') logging.getLogger('test').info('TEST PASS') self.assertEqual(True, True) def test_fail(self): logging.getLogger('do_not_want').info('HIDE THIS') logging.getLogger('test').info('TEST FAIL') self.assertEqual(True, False) When test fails, it prints out all logging info. I can use --logging-filter to filer out only some loggers:
nosetests test.py --verbosity=2 --logging-filter=test test_fail (test.Test) ... FAIL test_pass (test.Test) ... ok ====================================================================== FAIL: test_fail (test.Test) ---------------------------------------------------------------------- Traceback (most recent call last): File ".../test.py", line 14, in test_fail self.assertEqual(True, False) AssertionError: True != False -------------------- >> begin captured logging << -------------------- test: INFO: TEST FAIL --------------------- >> end captured logging << --------------------- ---------------------------------------------------------------------- Ran 2 tests in 0.001s FAILED (failures=1) However, it does not show anything when tests pass.
I would like to see output of one specific logger when tests pass. I have found that I can use -s to show all stdout / stderr text which is not exactly what I need - it prints everything. I tried to play with various settings such as --nologcapture, --nocapture, or --logging-filter but I was not able to get desired effect.