2017-12-22 4 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

아니요, 오류를 수동으로 catch하려면 '시도'를 사용해야합니다. 함수는 * 오류 *를 반환하지 않습니다. * 오류가 발생합니다. – 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 

이렇게하면 예외가 catch되어 인쇄됩니다. 이 특별한 경우에는 다음과 같이 출력 할 것입니다 : (<type 'exceptions.KeyError'>, KeyError('two',), <traceback object at 0x102c71c20>)

관련 문제