2

Python プロジェクトで単体テストを行うために、Nose の TestSuite を使用しています。

問題は、私のプロジェクトがサードパーティのサンドボックスとリンクされており、API によって通信していることですが、エラーがサードパーティ側から発生することがあります。そのため、特定のエラーが原因でテストが失敗した場合にテストを再起動する方法を見つけようとしています。

TestSuite 内で既にこれを行っている人はいますか? または方法を考えていますか?

ありがとう

4

1 に答える 1

1

1)テスト全体を再実行するのではなく、テスト内のリモート コードを再試行することがよくあります。

2) ただし、失敗したすべてのテストを本当に繰り返して、誰もより良い解決策を思いつかない場合は、次のような api を使用してカスタム テストランナーを作成できます。

#in unittest.TestCase
retryManager.logFailure(test=self, error)

#where you run tests
for test in retryManager.failedTests
    suite = unittest.TestLoader().loadTestsFromTestCase(testclass)
    testResult = unittest.TextTestRunner(verbosity=2).run(suite)

例外をキャッチしたくない場合は、テストが成功したかどうかを確認することもできますtestResult.wasSuccessful()

RetryManager は単なるリポジトリ/失敗のログのようなものです。

3) pytest を使用します。この機能が組み込まれています: http://pytest.org/latest/xdist.html#looponfailing

于 2012-04-25T12:47:49.713 に答える