La salida de unittest
se escribe en el flujo de error estándar, que puedes canalizar a otro lugar En un cuadro de * nix esto sería posible así:
python -m unittest some_module 2> /dev/null
En las ventanas, esto debería tener este aspecto (gracias Karl Knechtel):
python -m unittest some_module 2> NUL
Si ejecuta las pruebas de pitón , puede simplemente reemplazar la corriente stderr
así:
import sys, os
sys.stderr = open(os.devnull, 'w')
... # do your testing here
sys.stderr = sys.__stderr__ # if you still need the stderr stream
Como solo desea desactivar las actualizaciones de los símbolos., F, E, también puede crear su propia clase TestResult
anulando la predeterminada. En mi caso (Python 2.6), este sería el siguiente:
import unittest
class MyTestResult(unittest._TextTestResult):
def addSuccess(self, test):
TestResult.addSuccess(self, test)
def addError(self, test, err):
TestResult.addError(self, test, err)
def addFailure(self, test, err):
TestResult.addFailure(self, test, err)
Esto definitivamente desactiva la impresión de los caracteres, pero manteniendo la funcionalidad por defecto.
Ahora también necesitamos una nueva clase TestRunner
y redefinir la _makeResult
método:
class MyTestRunner(unittest.TextTestRunner):
def _makeResult(self):
return MyTestResult(self.stream, self.descriptions, self.verbosity)
Con este corredor ahora se puede disfrutar de una prueba gratuita de registro.
Solo una nota: esto no es posible desde la línea de comando, desafortunadamente.
¿Por qué quieres hacer esto? Sin duda, es útil ver el progreso de las pruebas? –
En mi caso, agrega confusión ya que mis pruebas se ejecutan en paralelo, imprimo 1 mensaje de registro y estos mensajes de registro de prueba no están sincronizados con la "E" o la "F" correspondientes. . – swan
¿Qué hay de ejecutar estas pruebas en procesos separados, que separarían los flujos de salida? –