无论我做什么,sys.exit()都由unittest调用,即使是最琐碎的例子.我无法判断我的安装是否搞砸了或者发生了什么.
IDLE 1.2.2 ==== No Subprocess ==== >>> import unittest >>> >>> class Test(unittest.TestCase): def testA(self): a = 1 self.assertEqual(a,1) >>> unittest.main() option -n not recognized Usage: idle.pyw [options] [test] [...] Options: -h, --help Show this message -v, --verbose Verbose output -q, --quiet Minimal output Examples: idle.pyw - run default set of tests idle.pyw MyTestSuite - run suite 'MyTestSuite' idle.pyw MyTestCase.testSomething - run MyTestCase.testSomething idle.pyw MyTestCase - run all 'test*' test methods in MyTestCase Traceback (most recent call last): File "", line 1, in unittest.main() File "E:\Python25\lib\unittest.py", line 767, in __init__ self.parseArgs(argv) File "E:\Python25\lib\unittest.py", line 796, in parseArgs self.usageExit(msg) File "E:\Python25\lib\unittest.py", line 773, in usageExit sys.exit(2) SystemExit: 2 >>>
dmeister.. 28
在新的Python 2.7版本中,unittest.main()有一个新参数.
如果'exit'设置为False
,sys.exit()
则在执行期间不会调用unittest.main()
.
在新的Python 2.7版本中,unittest.main()有一个新参数.
如果'exit'设置为False
,sys.exit()
则在执行期间不会调用unittest.main()
.
你的例子也在我的安装上退出.我可以让它执行测试并通过更改保持在Python中
unittest.main()
至
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromTestCase(Test))
更多信息,请点击这里在Python库参考.
不要试图unittest.main()
从IDLE 运行.它试图访问sys.argv
,它正在获得IDLE开始的args.要么以与IDLE不同的方式运行测试,要么调用unittest.main()
自己的Python进程.
弹出打开源代码unittest.py
.在运行所有测试后unittest.main()
硬编码调用sys.exit()
.用于TextTestRunner
从提示符运行测试套件.
很高兴能够在第一次尝试unittest模块时证明你的测试工作,并且知道你不会退出Python shell.但是,这些解决方案取决于版本.
我使用Python 2.6在工作中,import
荷兰国际集团unittest2 as unittest
(这是unittest
在Python 2.7理应发现模块).
这unittest.main(exit=False)
在Python 2.6的unittest2中不起作用,而JoeSkora的解决方案确实如此,并重申它:
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromTestCase(Test))
要将其分解为其组件和默认参数,并为各种组合对象使用正确的语义名称:
import sys # sys.stderr is used in below default args test_loader = unittest.TestLoader() loaded_test_suite = test_loader.loadTestsFromTestCase(Test) # Default args: text_test_runner = unittest.TextTestRunner(stream=sys.stderr, descriptions=True, verbosity=1) text_test_runner.run(loaded_test_suite)
在Python 2.7及更高版本中,以下内容应该有效.
unittest.main(exit=False)