これは機能です。これをオーバーライドする場合は、run()
メソッドでサブクラス化してTestCase
クラスおよび/またはTestSuite
クラスをオーバーライドし、ロジックをオーバーライドする必要があります。
P.S: は、私はあなたのクラスでunittest.TestCase
とオーバーライドメソッドrun()
をサブクラス化する必要があると思う:
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)
(私はデフォルトrun
定義に2つのresult.stop()
の呼び出しを追加しました)。
次に、すべてのテストケースを変更して、unittest.TestCase
の代わりに、この新しいクラスのサブクラスにする必要があります。
警告:このコードはテストしませんでした。
私はそれがかなり能力があるかどうかはわかりません(むしろ、これに多大な努力を払う必要はありません...)。 py.testの--exitfirstオプションと同等のものがあることを期待していました。 – AnC
他の方法はありません。実際、unittest.pyコードはかなりシンプルです。読みやすく、拡張するのが簡単です。 –
私はこれを調べて、フラグがセットされていれば中止するためにunittest.TextTestRunner.testをオーバーライドしようとしましたが、それは既にテストのセット全体であり、それは私を助けません... すべてのポインタは、ようこそ! – AnC