10

ノーズ テスト ランナーを使用しながら、特定のテスト メソッドの結果を取得し、ティアダウン メソッド内で出力できるようにしたいと考えています。ここに非常に良い例があります。

しかし残念ながら、nosetests example.pyスーパークラスの run メソッドがオーバーライドされているという事実をノーズが好まないように見えるため、running は機能しません。

AttributeError: 'ResultProxy' object has no attribute 'wasSuccessful'
4

2 に答える 2

5

警告: 以下は、tearDown 中に実際にテストにアクセスするのではなく、各結果にアクセスします。

ノーズ プラグインを作成することもできます (ここの API ドキュメントを参照してください)。あなたがおそらく興味を持っているメソッドはafterTest()、テストの後に実行される...です。:)ただし、正確なアプリケーションによっては、handleError()/handleFailure()またはfinalize()実際にはより便利な場合があります。

以下は、実行直後にテスト結果にアクセスするプラグインの例です。

from nose.plugins import Plugin
import logging
log = logging.getLogger('nose.plugins.testnamer')

class ReportResults(Plugin):
    def __init__(self, *args, **kwargs):
        super(ReportResults, self).__init__(*args, **kwargs)
        self.passes = 0
        self.failures = 0
    def afterTest(self, test):
        if test.passed:
            self.passes += 1
        else:
            self.failures += 1
    def finalize(self, result):
        print "%d successes, %d failures" % (self.passes, self.failures)

この些細な例では、パスと失敗の数を報告するだけです (あなたが含めたリンクのようですが、もっと面白いことをするためにそれを拡張できると確信しています (ここに別の楽しいアイデアがあります)。これを使用するには、それがインストールされていることを確認してください) Nose (またはカスタム ランナーにロード) し、--with-reportresults でアクティブ化します。

于 2012-12-18T07:24:48.563 に答える