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

Pytest导入模块时执行main() 无法仅测试指定函数问题排查

问题原因

Python 导入模块时会执行模块顶层的所有可执行代码,你在milage_converter.py文件末尾直接写了main()调用,这行属于顶层代码:

  • 当测试文件执行from py_exercises.src import milage_converter这行导入语句时,还没进入测试函数、你的monkeypatch输入模拟还没生效,就已经触发了main()函数执行
  • main()内部调用了input()读取标准输入,而pytest默认会捕获程序的输入输出,此时直接读stdin就会抛出你遇到的报错
解决方法

把milage_converter.py末尾的main()调用改成Python标准的脚本入口判断写法即可:

if __name__ == "__main__":
    main()

这个写法的逻辑是:

  • 当你直接运行python3.9 milage_converter.py使用脚本功能时,内置变量__name__的值为__main__,会正常执行main()函数,原有功能不受任何影响
  • 当文件被测试代码或者其他模块导入时,__name__的值为模块名milage_converter,条件不满足,不会执行main(),也就不会在导入阶段触发输入逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:57:03