unittest.main()在Spyder中崩溃了python解释器

时间:2014-04-02 15:17:55

标签: python spyder python-unittest

我有一个包含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

1 个答案:

答案 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)