2017-05-05 11 views
0

例外が正しく発生したことを確認する方法を知っている人はいますか?Python 2.7で例外が正しく発生していることを確認しますか?

私はPython 2.7で動作するものが必要です。

assert (a_a0_getinst.add_port("iTCK", ISC.PortType_INPUT)), "Can't add duplicate port" 

私が手にエラーがある:以下「アサート」は、ライブラリunittestモジュールはPythonから使用することは非常に正しい方法ではありませんあなたはちょうどそれが提起を確認するには

Traceback (most recent call last): 
    File "test_010_module.py", line 157, in runTest 
    a_a0_addinst = a_a0.add_instance("A00", b_a0) 
    File "/nfs/sc/disks/sc_dteg_2004/users/acheung1/dteg_tools-isc/python/t/ISC.py", line 475, in add_instance 
    return _ISC.SharedModule_add_instance(self, name, module) 
RuntimeError: Can't add duplicate instance with instance name 'A00' to module 'A_A0' 

答えて

0

例外の正しい種類は、あなたが使用することができます。

self.assertRaises(RuntimeError, your_function, *args, **kwargs) 

をUNITTにest.TestCaseクラス。 the docs for assertRaisesを参照してください。

あなたも、それはまた正しいエラーメッセージを持っていることを確認したい場合は、代わりに使用することができます。

self.assertRaisesRegexp(RuntimeError, "error message", your_function_call, *args, **kwargs) 

たunittest.TestCaseクラスに。ここにはthe docs for assertRaisesRegexpがあります。

また、あなたは引数を分離する必要はありません、その場合、コンテキストマネージャ、これらの操作を行うことができますあなたが言及したよう

with self.assertRaises(RuntimeError): 
    your_function_call(arg1, arg2) 

with self.assertRaisesRegexp(RuntimeError, "error message"): 
    your_function_call(arg1, arg2) 

ものは、Pythonの2.7のためのものです。 Python 3.xの場合、assertRaisesは同じ動作をしますが、正規表現はassertRegex(no p)です。

編集:コメントに指摘されているように、これはunittestスタイルのテストクラスを使用している場合にのみ機能します。 py.testを使用している場合はit has its own similar methods you can useです。

+0

OPはunittestを使用していると仮定します。 – tdelaney

+0

ありがとう、bouteillebleu! self.assertRaises(RuntimeErrorが、a_a0.add_instance( "A00"、b_a0)) は...しかし、私はまだ、問題文の中で、前述のように、その同じエラーを取得しています: 私はこれをしませんでした。 –

+0

はまた、エラーで "self.assertRaisesRegexpを(RuntimeErrorが、 " 'A_A0' をモジュールにインスタンス名 'A00' で重複したインスタンスを追加することはできません"、a_a0.add_instance( "A00"、 _a0 b)参照)、" 試してみました: トレースバック(most ... last): runTestのファイル "test_010_module.py"、行157 self.assertRaisesRegexp(RuntimeError、 "インスタンス名 'A00'の重複インスタンスをモジュール 'A_A0' '、a_a0に追加できません。 ファイルxxx、行x、add_instance 戻り値_ISC.SharedModule_add_instance(自己、名前、モジュール) RuntimeError:インスタンス名が 'A00'の重複インスタンスをモジュール ' A_A0 –

関連する問題