1
我目前正在使用Zed A. Shaw的「Learn Python Hard Way」,並且在使用assert_raises時使用exercice 49時遇到了相當多的麻煩。下面是我用我的測試文件中的代碼:Python,無法使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.")
謝謝!我使用Exception作爲第一個參數,它的工作原理...我花了一些時間,因爲我提出了其他的例外,所以它不是像你的例子那樣的「真實」的,但是通過查看我的ParserError類並意識到它是傳遞一個異常,我試了一下,它的工作。 – Estarius
我比'Exception'更具體,因爲它涵蓋了你可能不想要的各種東西,例如'KeyErrors'。 –
我在* EDIT *中添加了一些代碼,我怎麼能知道這種加註會返回給我什麼樣的錯誤? – Estarius