2

を使用して出力されるすべての例外テキストを廃棄することは可能unittestですか?

つまり、多数のテストがあり、そのうちのいくつかが例外をスローした場合、unittestモジュールはすべての例外を赤で (少なくとも IDLE で) 出力します。例外を印刷しない方法はありますか (ただし、printキーワードを使用して印刷するテキストは残しておきますか?

たとえば、tearDownClass()関数で出力するテキストがあり、それを出力したいのですが、30 行の赤い例外テキストが後に続かないとよいでしょう。これは可能ですか?

4

2 に答える 2

1

私があなたを正しく理解していれば、あなたは自己定義ロガーが欲しいだけですよね?

すべての単体テストをビットtry-exceptブロックに入れ、すべての例外をキャッチします。あとは好きなように印刷してください。

...
try:
    def test1(unit.tests):
        pass
    def test2(unit.tests):
        pass
except Exception, e:
    print 'here is the exception message', repr(e)
    # Use your own function to deal with print function or whatever you want here

...
于 2014-10-21T06:33:04.567 に答える
0

したがって、comment-41597224によると、自分の問題ではないと感じているため、有用な出力を意図的に消去する必要があります。

Lib\unittest\result.py:_exc_info_to_stringその場合は、特定のケースに適用される、またはそれを使用するメソッド (おそらくaddErrorまたは)に関連する変更を置き換える/作成しますaddFailure

または、正規表現で後処理する独立したスクリプト/コマンドに出力をパイプすることもできます。

  • stdoutwhile exceptions toに結果が書き込まれる場合は、コマンド ラインstderrと同じくらい簡単です。2>nul

しかし、私はまだこれに反対することをお勧めします。次の理由により、どの例外が発生するかは気にします。

  • それらは、生徒のミスだけでなく、あなたのミスの結果であることが判明する可能性があります
  • 「合格/不合格」ではなく、逐語的な出力で返信できます。これは、作業が少なくなり、敗者にそれを修正するためのより良いヒントを提供します

何かが正しくないと思われる場合に、(フィルタリングされた) 要約と完全な出力を表示する機会の両方を取得できるようにすれば、両方の長所を活かすことができます。

于 2014-10-21T10:08:48.610 に答える