Es una característica. Si desea sobrescribir esto, deberá subclasificar las clases TestCase
y/o TestSuite
y anular la lógica en el método run()
.
P.S .: yo creo que hay una subclase unittest.TestCase
y reemplazar el método run()
en su clase:
def run(self, result=None):
if result is None: result = self.defaultTestResult()
result.startTest(self)
testMethod = getattr(self, self._testMethodName)
try:
try:
self.setUp()
except KeyboardInterrupt:
raise
except:
result.addError(self, self._exc_info())
return
ok = False
try:
testMethod()
ok = True
except self.failureException:
result.addFailure(self, self._exc_info())
result.stop()
except KeyboardInterrupt:
raise
except:
result.addError(self, self._exc_info())
result.stop()
try:
self.tearDown()
except KeyboardInterrupt:
raise
except:
result.addError(self, self._exc_info())
ok = False
if ok: result.addSuccess(self)
finally:
result.stopTest(self)
(He añadido dos result.stop()
llamadas a la definición por defecto run
).
A continuación, deberá modificar todas las casillas de verificación para convertirlas en subclases de esta nueva clase, en lugar de unittest.TestCase
.
ADVERTENCIA: No he probado este código. :)
No estoy seguro de ser capaz de eso (o más bien, no quiero poner demasiado esfuerzo en esto ...). Tenía la esperanza de que hubiera un equivalente de py.test's --exitfirst option. – AnC
Bueno, no hay otra manera. En realidad, el código unittest.py es bastante simple, fácil de leer y extender. –
He investigado esto y he intentado anular unittest.TextTestRunner.test para abortar si se configuró un indicador, pero ese es todo el conjunto de pruebas, por lo que no me sirve ... Cualquier puntero sería más ¡Bienvenido! – AnC