C'est une caractéristique. Si vous voulez surcharger cela, vous devez sous-classer les classes TestCase
et/ou TestSuite
et remplacer la logique dans la méthode run()
.
P.S .: Je pense que vous avez sous-classe unittest.TestCase
et remplacer la méthode run()
dans votre classe:
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)
(j'ai ajouté deux result.stop()
appels à la définition par défaut run
).
Ensuite, vous devrez modifier tous vos testcases pour en faire des sous-classes de cette nouvelle classe, au lieu de unittest.TestCase
.
AVERTISSEMENT: Je n'ai pas testé ce code. :)
Je ne suis pas sûr d'être capable de ça (ou plutôt, je ne veux pas mettre trop d'effort dans ça ...). J'espérais qu'il y aurait un équivalent de l'option --exitfirst de py.test. – AnC
Eh bien, il n'y a pas d'autre moyen. En fait, le code unittest.py est plutôt simple - facile à lire et à étendre. –
J'ai examiné cela, et j'ai essayé de surcharger unittest.TextTestRunner.test pour annuler si un drapeau a été défini - mais c'est déjà l'ensemble des tests, donc ça ne m'aide pas ... Les pointeurs seraient plus Bienvenue! – AnC