关于python:unittest导致sys.exit()

关于python:unittest导致sys.exit()

Unittest causing sys.exit()

不管我做什么,unittest都会调用sys.exit(),甚至是最简单的例子。我不知道我的安装是否有问题或发生了什么。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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
>>>

在新的python 2.7版本中,unittest.main()有一个新的参数。

如果"exit"设置为False,则在执行unittest.main()期间不调用sys.exit()


您的示例也正在退出我的安装。我可以让它执行测试,并通过更改

1
unittest.main()

1
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromTestCase(Test))

有关更多信息,请参阅python库参考。


不要试图从空闲状态运行unittest.main()。它试图访问sys.argv,并获取空闲的参数。要么用与空闲不同的方式运行测试,要么在自己的python进程中调用unittest.main()


很高兴能够证明您的测试在第一次尝试UnitTest模块时是有效的,并且知道您不会退出Python shell。但是,这些解决方案依赖于版本。

Python 2.6

我在工作中使用的是python 2.6,importing unittest2 as unittest(据推测是python 2.7中的unittest模块)。

unittest.main(exit=False)在Python2.6的UnitTest2中不起作用,而Joeskora的解决方案起作用,并重申:

1
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromTestCase(Test))

要将其分解为组件和默认参数,并为各种组合对象使用正确的语义名称:

1
2
3
4
5
6
7
8
9
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和3

在Python2.7及更高版本中,以下内容应该有效。

1
unittest.main(exit=False)

弹出打开源代码到unittest.pyunittest.main()是硬编码的,运行完所有测试后调用sys.exit()。使用TextTestRunner从提示运行测试套件。


1
2
3
4
try:
    sys.exit()
except SystemExit:
    print('Simple as that, but you should really use a TestRunner instead')


推荐阅读

    linux的nc命令安装?

    linux的nc命令安装?,网络,检测,状态,项目,工具,系统,环境,软件,通信,服务,在l

    linux命令rz安装包?

    linux命令rz安装包?,数据,服务,系统,命令,工具,密码,文件,服务器,指令,协议,l

    linux的安装软件命令?

    linux的安装软件命令?,软件,系统,名称,发行,官方网站,市场,官网,密码,网站,

    linux安装dbe命令?

    linux安装dbe命令?,系统,电脑,通用,数据,环境,变动,在线,业务,信息,网站,LINU

    linux命令执行安装?

    linux命令执行安装?,软件,系统,管理,网站,官网,市场,中心,最新,灵活,工作,如

    linux系统安装命令集?

    linux系统安装命令集?,系统,软件,工作,工具,在线,信息,数据,官方网站,基础,

    dd命令安装linux?

    dd命令安装linux?,标准,设备,数据,系统,名称,位置,环境,信息,数字,情况,安卓L

    终端命令行安装linux?

    终端命令行安装linux?,软件,系统,工具,终端,工作,状态,公司,官网,中心,时间,l

    gpg命令安装linux?

    gpg命令安装linux?,系统,环境,软件,管理,在线,最新,密码,不了,信息,命令,为什

    linux安装ls命令?

    linux安装ls命令?,系统,工作,信息,命令,地址,目录,工具,基础,管理,传播,linux

    linux调用函数的命令?

    linux调用函数的命令?,系统,代码,策略,上调,时间,设计,通信,网络,设备,项目,

    linux更新安装命令行?

    linux更新安装命令行?,软件,系统,工作,在线,地址,名称,官网,命令,中心,情况,L

    linux命令安装ndk?

    linux命令安装ndk?,系统,平台,工具,工程,信息,代码,百度,环境,位置,名字,如何

    linux命令行安装软件?

    linux命令行安装软件?,软件,系统,官网,工具,名称,在线,灵活,发行,中心,最新,L

    安装时linux常用命令?

    安装时linux常用命令?,系统,工作,基础,地址,信息,工具,软件,命令,在线,数据,l

    linux外部命令调用?

    linux外部命令调用?,系统,软件,标准,命令,盘中,管理,外部,进程,程序,内存,lin

    linux怎么调用命令行?

    linux怎么调用命令行?,系统,地址,工具,工作,首页,终端,命令,密码,信息,情况,l

    linux终端安装命令?

    linux终端安装命令?,软件,官网,工作,信息,公司,网站,电脑,市场,中心,系统,Lin

    linux安装解压命令?

    linux安装解压命令?,系统,工具,管理,命令,文件,电脑,名称,格式,文件名,目录,l

    命令查询linux包安装?

    命令查询linux包安装?,软件,地方,地址,名字,系统,名称,信息,路径,命令,文件,