You need to enable JavaScript to run this app. Python3.9《笨方法学Python3》ex49测试parse_verb出现AssertionError
优惠活动
大模型
产品
解决方案
定价
更多

Python3.9《笨方法学Python3》ex49测试parse_verb出现AssertionError

报错根因分析

你遇到的报错核心原因是parse_verb函数的异常处理逻辑写法错误:

# 你当前的异常分支写法
else:
    return ParserError("Expected a verb next.")

这里你是返回了ParserError的实例对象,而没有主动抛出异常。assert_raises只能捕获被raise关键字主动抛出的异常,自然检测不到你返回的异常对象,就会报ParserError not raised的错误。

我们再验证你测试用例的逻辑是否正确:你传入的词列表第一个元素是('noun', 'princess'),parse_verb首先调用skip(word_list, 'stop'),因为第一个元素类型是noun不是stop,所以skip不会做任何操作;接下来peek拿到的第一个词类型是noun,不等于verb,确实应该触发异常逻辑,你的测试用例设计是对的,问题只在异常的抛出方式。

修复方案

修改parse_verb的异常分支代码,把return改成raise即可:

else:
    raise ParserError("Expected a verb next.")

修改完成后再运行nosetests,该测试用例就可以正常通过。你也可以检查后续要写的其他解析函数(比如parse_subject、parse_object),避免出现同类的return异常的问题。

内容的提问来源于stack exchange,提问作者CuriousCoder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 18:06:08