You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么Python3.9的doctest在PyCharm运行通过,命令行执行却失败?

问题原因

你遇到的非预期报错和你编写的二次方程求解函数的doctest用例无关,问题出在代码的执行入口逻辑:

  • 你在脚本顶层直接写了doctest.testmod(),没有加if __name__ == "__main__"的执行条件判断。
  • PyCharm直接运行脚本时,当前模块的__name__值为__main__,testmod()只会扫描你自己编写的solve函数的docstring用例,所以运行正常。
  • 用python -m doctest命令执行时,doctest模块会先将你的脚本作为普通模块导入,此时顶层的testmod()会先执行一次;之后doctest还会扫描整个已导入模块的所有可访问对象的docstring,包括你导入的doctest模块自身的类、方法的内置测试用例,你看到的DebugRunner相关报错就是doctest内部用例执行失败的结果,和你的代码逻辑无关。
解决方案

两种方案二选一即可:

  1. 保留直接运行脚本可执行测试的能力,将末尾的测试调用包裹在入口判断中:
# 把原来的 doctest.testmod() 替换成下面的代码
if __name__ == "__main__":
    doctest.testmod()
  1. 如果你只打算用python -m doctest的方式执行测试,直接删除脚本末尾的doctest.testmod()这行即可,-m doctest参数会自动扫描所有docstring中的测试用例并执行。

修改完成后两种执行方式都会正常运行你编写的测试用例,不会再出现无关报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 20:27:04