2013-05-28 5 views
1

저는 현재 Zed A. Shaw의 "Python 어려운 방법 배우기"를하고 있으며 assert_raises를 사용하여 연습 문제 49를 가지고 있습니다. 여기에 내 테스트 파일에서 사용하고있는 코드입니다 :파이썬, 제대로 작동하도록 assert_raises를 얻을 수 없습니다.

def test_parseVerb(): 
    assert_raises("ParserError",parser.parse_verb,[('stop', 'the'), 
                ('noun', 'bear')]) 

는 그리고이 PowerShell을 나에게주고있는 오류입니다 : 나는 솔직히 무슨 일이 일어나고 있는지 전혀 모르는

====================================================================== 
ERROR: tests.parser_tests.test_parseVerb 
---------------------------------------------------------------------- 
Traceback (most recent call last): 
    File "C:\MrnMicro\Python27\lib\site-packages\nose\case.py", line 197, in runTest 
    self.test(*self.arg) 
    File "C:\Documents and Settings\sthma2\Documents\LPTHW\Projects\ex48\tests\parser_tests.py", line 37, in test_parseVer 
b 
    assert_raises("ParserError",parser.parse_verb,fail_list) 
    File "C:\MrnMicro\Python27\lib\unittest\case.py", line 476, in assertRaises 
    callableObj(*args, **kwargs) 
    File "C:\MrnMicro\Python27\lib\unittest\case.py", line 117, in __exit__ 
    if not issubclass(exc_type, self.expected): 
TypeError: issubclass() arg 2 must be a class or tuple of classes 

---------------------------------------------------------------------- 
Ran 10 tests in 0.016s 

FAILED (errors=1) 

, 누군가 도움이된다면 많은 도움이 될 것입니다!

감사합니다.

편집 당신은 첫 번째 매개 변수가 아닌 문자열 이름을 포함하는, 예를 들어, 예외의 실제 클래스를 제공 할 필요가

def parse_verb(word_list): 
    skip(word_list, 'stop') 

    if peek(word_list) == 'verb': 
     return match(word_list, 'verb') 
    else: 
     raise ParserError("Expected a verb next.") 

답변

4

assert_raises(ZeroDivisionError, operator.div, 1, 0) 

문서가 실제로 표준 모듈 unittest에, 코 pep8에 이름을 적응.

+0

감사합니다. 첫 번째 매개 변수로 Exception을 사용했고 효과가있었습니다 ... 예외적으로 Else에서 예외를 발생 시켰기 때문에 시간이 좀 걸렸습니다. 따라서 ParserError 클래스를보고 깨닫는 것이 예제처럼 "진짜"는 아니 었습니다. 예외를 전달, 나는 그것을 시도하고 그것은 효과가. – Estarius

+0

내가 원하지 않을 수도있는 모든 종류의 것들을 다루기 때문에 나는 'Exception'보다 더 구체적 일 것이다. 'KeyErrors'. –

+0

* * EDIT *에 약간의 코드를 추가했는데 이런 종류의 레이즈로 어떤 종류의 오류가 나에게 돌아올 지 알 수 있습니까? – Estarius

관련 문제