To jest funkcja. Jeśli chcesz to zmienić, musisz podklasować klasy TestCase
i/lub TestSuite
i zastąpić logikę w metodzie run()
.
P.S .: Chyba trzeba podklasy unittest.TestCase
i zastąpić metodę run()
w swojej klasie:
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)
(Dodałem dwa result.stop()
połączeń do definicji domyślny run
).
Będziesz musiał zmodyfikować wszystkie swoje testcases, aby utworzyć podklasy tej nowej klasy, zamiast unittest.TestCase
.
OSTRZEŻENIE: Nie testowałem tego kodu. :)
Nie jestem pewien, czy jestem do tego zdolny (a raczej nie chcę w to wkładać zbyt wiele wysiłku ...). Miałem nadzieję, że będzie odpowiednik opcji py.test --exitfirst. – AnC
Cóż, nie ma innej drogi. W rzeczywistości kod unittest.py jest dość prosty - łatwy do odczytania i rozszerzony. –
Zajrzałem do tego i próbowałem przesłonić unittest.TextTestRunner.test, aby przerwać, jeśli flaga została ustawiona - ale to już cały zestaw testów, więc to mi nie pomoże ... Wszelkie wskaźniki byłyby najbardziej Witamy! – AnC