2017-12-22 3 views
1

Python assertを使用して関数内の特定の例外をチェックできますか?たとえば、もし私が知っている機能がKeyErrorになると、assertはそれを検出できますか?例:関数内の特定の例外をチェックするために "assert"を使用できますか?

def get_value(x): 
    lookup = {'one': 1} 
    return lookup[x] 

assert get_value('two') == KeyError 

私はこれを実行すると、ただKeyError例外が発生します。 assertできますか?それとも、assertが使われていないのですか?

+0

この場合、おそらく 'type()'を比較したいでしょう。 – scharette

+3

通常、テストフレームワークは、 'assert_raises'のような例外をテストする関数を提供します。 –

+1

いいえ、手動でエラーをキャッチする場合は、 'try'を使用する必要があります。機能はエラーを返さない*エラーを発生させます。 – jonrsharpe

答えて

1

はこれを参照してください。What is the use of "assert" in Python?

assertは、条件をアサートするためにある、この条件が満たさ他のアクションをトリガーされていることを確認を意味します。 あなたの場合、例外をキャッチしたいので、これはあなたが望むものです。

#!/usr/bin/env python 
import sys 
def get_value(x): 
    lookup = {'one': 1} 
    return lookup[x] 

try: 
    get_value('two') 
except: # catch *all* exceptions 
    e = sys.exc_info() 
    print e 

これは、例外をキャッチして印刷します。この場合、次のようなものが出力されます: (<type 'exceptions.KeyError'>, KeyError('two',), <traceback object at 0x102c71c20>)

関連する問題