2010-04-26 11 views
11

Estoy intentando registrar el resultado de las pruebas en un archivo de texto. Estoy usando el módulo unittest y quiero registrar los resultados en un archivo de texto en lugar de la pantalla. Tengo un guion aquí para explicar lo que se ha intentado hasta ahora. Este es el guión de prueba.Registrar la salida Unittest en un archivo de texto

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() 

Lo he agregado al archivo pero parece que no funciona.

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

return suite >> sys.stout 

y también:

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

He intentado varias versiones diferentes de este comando.

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

He intentado esto. Quiero que el archivo de registro se almacene y se cree dentro del script de python. No quiero tener que llamar al python tests.py >> log_file.txt.

Gracias por cualquier ayuda

Respuesta

20

puede pasar el corredor de texto en el método principal. El texto del corredor debe estar configurado para escribir en un archivo en lugar de std.err, ya que envuelve la transmisión en un decorador. Lo siguiente funcionó para mí en 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

@Andrew Cox - Esto funcionó. Gracias – chrissygormley

Cuestiones relacionadas