2014-08-27 105 views
0

我工作的一個小的腳本來運行python單元測試之後,我不喜歡這樣寫道:打印結果每個單元測試

def run_test(suite): 
    runner = unittest.TextTestRunner() 
    start = time.time() 
    result = runner.run(suite) 
    end = time.time() 
    log_test_results(result, str(end-start)) 

而在log_test_results我寫出所有合格/不合格試驗。問題在於,我必須等待測試套件完成才能查看是否有任何測試通過/失敗。在TestCase內部的每個斷言之後,是否有任何方法可以打印結果?

回答

0

您可以設置TextTestRunner的詳細程度,然後在每個測試用例方法完成後,您將看到通過/失敗結果。

runner = unittest.TextTestRunner(verbosity=2) 
+0

這幾乎是我所期待的。但只是一個後續問題,所以我可以看看是否有其他方法可以做到這一點。比方說,我想將自己記錄到自定義記錄器中,有沒有什麼方法可以自己收集這些信息,記錄並打印,而不是讓TextTestRunner打印出來? – user1776562 2014-08-27 09:06:11

+0

@ user1776562您可以傳遞流變量。例如unittest.TextTestRunner(verbosity = 2,stream = sys.stderr),您可以將自定義流傳遞給它,而不是默認stderr,然後從流中獲取輸出。 – 2014-08-27 09:58:58