我使用nosetests test.py
運行單元測試:使鼻子的測試運行記錄顯示,即使測試通過
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)
如果測試失敗,它打印出所有日誌信息。我可以用--logging-filter
到過濾器出只有一些記錄器:
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)
但是,它並沒有顯示任何東西時,測試通過。
我想在測試通過時看到一個特定記錄器的輸出。我發現我可以使用-s
來顯示所有不符合我需要的stdout/stderr文本 - 它會打印所有內容。我試圖玩各種設置,如--nologcapture
,--nocapture
或--logging-filter
,但我無法獲得所需的效果。
logcapture插件只有〜250行。你可以很容易地進行子類化或適應,以做你想做的事情。你可以在這裏找到它(https://github.com/nose-devs/nose/blob/master/nose/plugins/logcapture.py)。 – rkrzr
@Fenikso您是否找到解決該問題的解決方案? – Stefan
@Stefan不,它似乎並不存在於鼻子中。我需要時使用一些醜陋的解決方法,例如寫入文件。 – Fenikso