导致sys.exit()的单元测试
时间:2020-03-05 18:57:51 来源:igfitidea点击:
无论我做什么,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 "<pyshell#7>", line 1, in <module> 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 >>>
解决方案
回答
不要尝试从IDLE运行unittest.main()
。它试图访问sys.argv,并且获取了IDLE开始时使用的args。以不同于IDLE的方式运行测试,或者在其自己的Python进程中调用unittest.main()
。
回答
示例也在我的安装中退出。我可以通过更改使其执行测试并保留在Python中
unittest.main()
到
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromTestCase(Test))
在Python库参考中可以找到更多信息。
回答
弹出打开源代码到" unittest.py"。运行所有测试后,对unittest.main()进行硬编码以调用sys.exit()。使用TextTestRunner
从提示符运行测试套件。
回答
try: sys.exit() except SystemExit: print('Simple as that, but you should really use a TestRunner instead')
回答
在新的Python 2.7版本中,unittest.main()具有新的参数。
如果将" exit"设置为" False",则在执行" unittest.main()"期间不会调用" sys.exit()"。