2017-07-18 54 views
1

我正在尋找清理正常的python unittest輸出。我想控制檯輸出仍是python unittest模塊,記錄文件失敗

test_isupper (__main__.TestStringMethods) ... ok 
test_split (__main__.TestStringMethods) ... ok 
test_upper (__main__.TestStringMethods) ... ok 
test_fail (__main__.TestFail) ... ERROR 

---------------------------------------------------------------------- 
Ran 4 tests in 0.001s 

OK 

但對於失敗的測試,我想捕捉詳細的輸出,並把在日誌文件中。因此,它不是與控制檯輸出內聯...

====================================================================== 
FAIL: test_fail (__main__.TestFail) 
---------------------------------------------------------------------- 
Traceback (most recent call last): 
    File "test.py", line x 
    self.assertTrue(False) 
AssertionError: False is not True 

====================================================================== 

獲取記錄到文件以供進一步調查,以及任何調試級別記錄器輸出。有沒有辦法在unittest.testcase中重載記錄器來做我想要的?

我要提到我仍然很新的蟒蛇......

+0

您必須向社區分享測試的完整代碼,從測試失敗中獲取最小值以便任何人都可以爲您提供幫助,只有這些數據是不可能的 –

+0

代碼應該不是問題的真正問題,因爲問題屬於來操縱和重定向'單元測試'模塊的輸出。我給出的例子失敗測試只有兩行... 'def test_fail(self): assertTrue(False)' – Tschutte

回答

0

我最終能夠得到足夠接近結果是什麼,我想通過testResult對象。從那個對象中,我能夠獲得元組的數據,這些數據是在已通過,失敗或出錯的不同測試中得到的。然後,這是一個簡單的創建一個「prettyPrint」方法來獲取該對象並很好地打印出內容。

確切的配方是:

suite = unittest.TestLoader().loadTestsFromModule(className) 
testResult = unittest.TextTestRunner(verbosity=3).run(suite) 

希望這有助於任何人都希望做類似的事情。