2010-04-26 59 views
11

我想將測試的輸出記錄到文本文件。我正在使用unittest模塊,並希望將結果記錄到文本文件而不是屏幕中。我在這裏有一些腳本來解釋迄今爲止已經嘗試過的內容。這是測試腳本。Log Unittest輸出到一個文本文件

import unittest, sys 

class TestOne(unittest.TestCase): 

    def setUp(self): 
     self.var = 'Tuesday' 
    def tearDown(self): 
     self.var = None 



class BasicTestOne(TestOne): 

    def runTest(self): 

     TestOne.setUp(self) 
     self.assertEqual(self.var, 'Tuesday') 



class AbsoluteMoveTestSuite(unittest.TestSuite): 

    # Tests to be tested by test suite 
    def makeAbsoluteMoveTestSuite(): 
     suite = unittest.TestSuite() 
     suite.addTest(TestOne("BasicTestOne")) 

     return suite 

    def suite(): 
     return unittest.makeSuite(TestOne) 


if __name__ == '__main__': 
    unittest.main() 

我已將此文件添加到文件中,但似乎無效。

log_file = 'log_file.txt' 
sys.stout = sys.sterr = open(log_file, 'w') 

return suite >> sys.stout 

也:

log_file = 'log_file.txt' 
return suite >> open(log_file, 'w') 

我嘗試了好幾種不同版本的命令。

if __name__ == '__main__': 
    unittest.main() >> open(log_file, 'w') 

我試過這個。我想要將日誌文件存儲並在python腳本中創建。我不想打電話給python tests.py >> log_file.txt

感謝您的任何幫助

回答

20

您可以將文本運行器傳遞到主要方法。文本運行器必須設置爲寫入文件而不是std.err,因爲它將流封裝在裝飾器中。下面在python中爲我工作2.6

if __name__ == '__main__': 
    log_file = 'log_file.txt' 
    f = open(log_file, "w") 
    runner = unittest.TextTestRunner(f) 
    unittest.main(testRunner=runner) 
    f.close() 
+0

@安德魯考克斯 - 這工作的一種享受。謝謝 – chrissygormley 2010-04-26 11:35:23

相關問題