我正在尝试将测试输出记录到文本文件中。我正在使用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
。
感谢您的帮助
答案 0 :(得分:26)
您可以将文本运行器传递给main方法。必须将文本运行器设置为写入文件而不是std.err,因为它将流包装在装饰器中。以下在python 2.6中为我工作
if __name__ == '__main__':
log_file = 'log_file.txt'
with open(log_file, "w") as f:
runner = unittest.TextTestRunner(f)
unittest.main(testRunner=runner)