assertRaisesが失敗したときにassertRaisesが例外をスローするコードがあります。私はassertRaisesが失敗するとテストが失敗し、テストが失敗したというレポートが最後に表示されると思いました。私は例外がスローされることを期待していませんでした。以下は私のコードです。私は何か間違っているのですか?私はPython 2.6.2を使用しています。Python unittest assertRaisesがassertRaisesが失敗したときに例外をスローする
答えて
投稿されたコードは間違っています。まず、class myClass():
はclass myClass:
となります。またif name == "main":
は次のようになります。
if __name__ == "__main__":
unittest.main()
は別に、これらの問題から、getName()
は例外myExcOne
を上げているため、これは失敗し、あなたのテストが例外myExcTwo
期待しています。
ここにいくつかのコードがあります。私たちは、カットやPythonのセッションにペーストすることが簡単になるように、あなたの質問にコードを編集してください:
import unittest
class myExcOne(Exception): "exception one"
class myExcTwo(Exception): "exception two"
class myClass:
def getName(self):
raise myExcTwo
class test_myClass(unittest.TestCase):
def setUp(self):
self.myClass = myClass()
def testgetNameEmpty(self):
#self.assertRaises(myExcOne,self.myClass.getName)
self.assertRaises(myExcTwo,self.myClass.getName)
if __name__ == "__main__":
unittest.main()
上でコードを更新しました。Hi mhawke、 __main__がコピーアンドペースト処理に混乱しました。 myClass()については、元のクラスが継承されているので、私は小さなテストケースを作成したときに()を削除するのを忘れていました。 テストは失敗したと見なされます。私はアサートが失敗したときにツールがどのように動作するかを理解しようとしています。 私の元の投稿では、アサーションが失敗した場合にツールが例外をスローすると誤解されました。例外をキャッチして何もしないようにコードを更新しました。断言が失敗したとしても、報告書は合格としている。 ブライアン –
脇から始まり、class
文のクラス名の後に()
は、現代では完全に正確ですPython - エラーではありません。それだけでそのMyException
とサブクラスをキャッチ - 問題の肉に
、assertRaises(MyException, foo)
は、その種類MyException
のサブクラスではありませんfoo()
を呼び出すことによって発生した例外を伝播するために文書化されています。あなたのコードでは1つの型の例外が発生し、テストでは別の無関係な型の1つが返されるため、unittest
モジュールのドキュメントであるhereのドキュメントに従って、発生した例外が伝播します。 "例外が発生した場合はテストに合格し、別の例外が発生した場合はエラー、例外が発生しなかった場合は失敗する」、「エラーです」は「他の例外を伝播する」ことを意味します。
try/exceptブロックに伝播された例外をキャッチすると、エラーは無効になり、unittestが診断することは何も残っていません。このエラーを失敗に変えることが目的なら(議論の余地のある戦略...)、except
ブロックはself.fail
に電話する必要があります。
ありがとうございました!私は私が投稿した後までunittestの私の誤解をキャッチしませんでした。上のコードを実行すると、
通常の単体テストランナー(unittest.main)で、すべてのテストメソッドが実行され、エラー(E)と失敗(F)[実際には特殊例外で診断されます]を報告します - 私はTextTestRunnerが動作するunittest.mainが(unittest.TestProgramクラスを介して)使用しているのとまったく同じですが、ソースをチェックしてください... unittest.mainで期待される結果を得ていますか? –
try/exceptブロックを取り出し、
- 1. assertRaises:私はassertRaisesを使用して例外をテストしてい
- 2. unittestセロリタスクassertRaises
- 3. assertRaisesが一致しない
- 4. Pythonの `unittest`` assertRaises`メソッドで `msg`パラメータを出力する方法は?
- 5. Python2.7のunittestでassertRaises()がキャッチしたエラーメッセージを表示するには?
- 6. Python unittest assertRaisesを使用して、その関数が例外をスローしないことをテストする方法は?
- 7. assertRaisesは組み込みの例外で機能しますか
- 8. Assert.ThrowsException例外がスローされたときにテストが失敗する
- 9. ソートマップが失敗したキールックアップで例外をスローする
- 10. unittest:wxpythonのイベントメソッドは例外を発生させますが、assertRaisesはそれを検出しません。
- 11. 失敗した場合に例外をキャストしてスローする
- 12. (assertRaises()を使用して)自己定義例外の発生をテスト中のエラー
- 13. Twilio SMS APIがXAMPPで例外をスローするのに失敗しました。
- 14. ユニットテストでassertRaisesでerrnoを使用する
- 15. キュウリのテストがJavaで失敗したときにスローされた例外を取得するには?
- 16. サービス検証:検証が失敗した場合は例外をスローします
- 17. 認証に失敗した場合のスロー例外
- 18. フォーカスを失ったときにScrollToCaretがnull参照例外をスローする
- 19. DjangoユニットテストでassertRaisesを正しく使用するには?
- 20. ユニットテストが終了する前にassertRaisesの関数が完了しますか?
- 21. Python unittestが失敗して終了する
- 22. 例外がスローされた場合、SBTのコンパイルは失敗します
- 23. Python unittestのテストMongoDBがランダムに失敗する
- 24. assertRaises BadRequestが機能していません
- 25. assertRaisesが先物で動作しません
- 26. 例外をチェックした後にプログラムが例外をスローする
- 27. Djangoユニットのテスト - assertRaisesは動作しないときに動作する
- 28. unittest in tensorflow、python session_test.py、例外がありました
- 29. CLIPS(クリア)コマンドが失敗する/ pyclipsで例外がスローされる
- 30. 例外がスローされたときにクラスがnullになる
「アサート失敗」とは具体的にはどういう意味ですか?スタックトレースまたはエラーメッセージを投稿できますか? –
私は、ドキュメントを再読み込みし、assertRaisesが失敗した場合に例外をスローすることが予想される動作です。私はツールがどのように機能するか誤解しました。 前の投稿でこれを忘れてしまった。私が例外を捕まえれば、テストは合格していないにもかかわらずテストが合格したことが報告されます。 –