【问题标题】:Unittest hangs when testing input, but same input runs perfectly fine on main program测试输入时单元测试挂起,但相同的输入在主程序上运行得很好
【发布时间】:2021-11-08 13:31:54
【问题描述】:

每当我运行以下单元测试时,它都会挂起,什么也没有发生。程序本身会在 1 秒内返回一个输出,但我已经运行了 5 分钟以上,没有发生任何事情。

import unittest

from syntax import *


class SyntaxTest(unittest.TestCase):
    def testCase(self):
        self.assertEqual(CheckSyntax('C'), 'Formeln är syntaktiskt korrekt')

if __name__ == '__main__':
    unittest.main() 

代码本身是一个简单的分子语法检查器。它还没有完全完成,但是对于上面的指定输入('C')运行良好。我已经上传到这里了:https://pastebin.com/rD3f6PWL

【问题讨论】:

    标签: python unit-testing syntax


    【解决方案1】:

    您正在导入语法模块,这意味着它将运行所有函数和类定义(而不是其中的代码)以及主体中的任何其他代码。语法模块的最后一行是

    print(CheckSyntax(input()))
    

    因此,当您导入语法模块时,该行将被执行并等待输入。如果您只是想在将语法作为脚本运行时执行此行,那么您最好将其包装在 if 主块中,例如

    if __name__ == "__main__":
        print(CheckSyntax(input()))
    

    这样,最后一行将仅在脚本直接运行时运行,而不是在将其导入以在其他地方使用时运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-28
      • 1970-01-01
      • 2016-08-08
      • 2016-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-11
      相关资源
      最近更新 更多