在IDLE中有没有办法直接运行PyUnit(unittest模块)单元测试?
我问,因为我有一个简短的测试模块,当我运行它与python mymodule.py从Cygwin shell我得到所有测试通过,但是当我使用Run->运行模块从IDLE测试通过,但是我得到一个异常(SystemExit:False).
例如,以下是一个示例测试模块来重现:
#!/usr/bin/python import unittest class fooTests(unittest.TestCase): def setUp(self): self.foo = "bar" def testDummyTest(self): self.assertTrue(True) def testDummyTestTwo(self): self.assertEquals("foo","foo") def tearDown(self): self.foo = None if __name__ == '__main__': unittest.main()
当我使用python fooTests.py从Cygwin shell运行它时,它会产生:
$python fooTests.py .. ---------------------------------------------------------------------- Ran 2 tests in 0.000s OK
但是当我在IDLE中编辑fooTests.py并且我运行 – >运行模块,由IDLE生成的新Python Shell产生:
>>> ================================ RESTART ================================ >>> .. ---------------------------------------------------------------------- Ran 2 tests in 0.031s OK Traceback (most recent call last): File "C:\Some\path\info\I\shortened\fooTests.py",line 20,in <module> unittest.main() File "C:\Python26\lib\unittest.py",line 817,in __init__ self.runTests() File "C:\Python26\lib\unittest.py",line 865,in runTests sys.exit(not result.wasSuccessful()) SystemExit: False >>>
我做错了什么,产生这种追溯,特别是如何修复它,以便我可以在IDLE内运行Run->运行模块(或F5)来快速运行单元测试?
(这当然一定是一个简单的问题,但是我的快速尝试已经证明是无效的.)
解决方法
你也可以做
if __name__ == '__main__': unittest.main(exit=False)
如果你使用Python> = 2.7