2

次の要件で、Python unittest で例外を確認したい:

  • エラーではなく、失敗として報告する必要がある
  • 元の例外を飲み込んではいけません

次の形式のソリューションをたくさん見てきました。

try:
    something()
except:
    self.fail("It failed")

残念ながら、これらのソリューションは元の例外を飲み込みます。元の例外を保持する方法はありますか?

最終的に、Pierre GMの回答の変形を使用しました:

try:
   something()
except:
    self.fail("Failed with %s" % traceback.format_exc())
4

1 に答える 1

2

示唆されているように、一般的な例外のコンテキストを使用できます。

except Exception, error:
    self.fail("Failed with %s" % error)

例外に関連する情報を取得することもできますsys.exc_info()

try:
    1./0
except:
    (etype, evalue, etrace) = sys.exc_info()
    self.fail("Failed with %s" % evalue)

タプル(etype, evalue, etrace)はこちら(<type 'exceptions.ZeroDivisionError'>, ZeroDivisionError('float division',), <traceback object at 0x7f6f2c02fa70>)

于 2012-09-20T10:17:44.787 に答える