Вывод журнала Unittest в текстовый файл
Я пытаюсь записать вывод тестов в текстовый файл. Я использую модуль unittest и хочу записывать результаты в текстовый файл вместо экрана. У меня есть script здесь, чтобы объяснить, что было до сих пор проверено. Это тест script.
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 script. Я не хочу называть python tests.py >> log_file.txt
.
Спасибо за любую помощь
Ответы
Ответ 1
Вы можете передать текстовый бегун в основной метод. Текстовый бегун должен быть настроен для записи в файл, а не 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()