单元测试在测试输入时挂起,但相同的输入在主程序上运行得很好
Unittest hangs when testing input, but same input runs perfectly fine on main program
每当我 运行 下面的单元测试时,它就会挂起,什么也没有发生。程序本身 returns 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
您正在导入语法模块,这意味着它将 运行 所有函数和 class 定义(不是其中的代码)以及主体中的任何其他代码。语法模块的最后一行是
print(CheckSyntax(input()))
所以当你导入语法模块时,这一行将被执行并等待输入。如果您只是想在将 运行 语法作为脚本时执行此行,那么最好将其包装在 if main 块中,例如
if __name__ == "__main__":
print(CheckSyntax(input()))
这样最后一行只有 运行 如果脚本是直接 运行 而不是如果它被导入以用于其他地方。
每当我 运行 下面的单元测试时,它就会挂起,什么也没有发生。程序本身 returns 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
您正在导入语法模块,这意味着它将 运行 所有函数和 class 定义(不是其中的代码)以及主体中的任何其他代码。语法模块的最后一行是
print(CheckSyntax(input()))
所以当你导入语法模块时,这一行将被执行并等待输入。如果您只是想在将 运行 语法作为脚本时执行此行,那么最好将其包装在 if main 块中,例如
if __name__ == "__main__":
print(CheckSyntax(input()))
这样最后一行只有 运行 如果脚本是直接 运行 而不是如果它被导入以用于其他地方。