我有一个包含unittest.TestCase
的python脚本,其中包含setUp()
函数和少量test_foo_does_bar()
类函数。
脚本结束如下:
if __name__ == '__main__':
unittest.main()
当我在Spyder中运行此脚本时(请参阅下面的配置详细信息),解释程序停在以下行:
----------------------------------------------------------------------
Ran x tests in x.xxxs
FAILED (failures=x)
没有多少Ctrl + C或Ctrl + D可以解救翻译并让我回到提示符。从命令提示符运行的相同脚本正常终止。
这是Spyder的错误还是我错过了什么?
设置信息: Spyder 2.2.3 Python 2.7.5 64位。 Qt 4.8.4,Windows上的PyQt4(API v2)4.9.6
答案 0 :(得分:4)
它不会使Python解释器崩溃,它会终止它。这是脚本的正常行为
您可以自己查看:在main.py
中说明了main = TestProgram
;这意味着unittest.main()
会调用TestProgram
类,__init__(self)
调用self.runTests()
,以此结束:
if self.exit:
sys.exit(not self.result.wasSuccessful())
因此它对sys.exit()
进行了特定调用,终止了解释器。
实际上,如果将其作为命令行运行,则返回命令行;如果你启动命令行Python,导入模块并调用该函数,你会看到你将返回到命令提示符 - 你不会留在Python中。
如果您希望脚本不终止解释器,只需在调用funcion时声明:
unittest.main(exit=False)