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

相同输入主程序运行正常,对应unittest单元测试执行时挂死无响应

问题根因

核心原因是syntax.py的全局作用域下存在未包裹在if __name__ == '__main__'判断中的阻塞执行逻辑:

  • 单独运行syntax.py时,这部分逻辑会按预期执行,输入C可快速返回结果
  • 当在单元测试中执行from syntax import *导入模块时,Python会先运行syntax.py全局作用域下的所有可执行代码,阻塞逻辑会在导入阶段直接触发,导致还未进入单元测试环节就已经挂死。

你提到单独调用CheckSyntax('C')可正常返回,说明函数本身无死循环问题,基本可确定为导入阶段的阻塞导致。

解决方法

打开syntax.py文件,将所有读取输入、测试调用、直接执行的业务代码全部移入if __name__ == '__main__'代码块中,调整后的syntax.py结构参考如下:

# 函数定义部分保留在全局作用域
def CheckSyntax(input_str):
    # 你原有的语法检查逻辑不变
    pass
# 其他工具函数定义也保留

# 所有直接执行的代码全部放到下面的代码块中
if __name__ == '__main__':
    # 比如你原来的读取用户输入、调用CheckSyntax输出结果的代码都放在这里
    input_content = input()
    print(CheckSyntax(input_content))

调整完成后重新运行单元测试即可正常执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 10:15:04