无论我做什么,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
>>> 

===============>>#1 票数:28

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

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

===============>>#2 票数:14 已采纳

您的示例也在我的安装上退出。 我可以让它执行测试并通过更改保持在Python中

unittest.main()

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

更多信息,请点击这里在Python库参考。

===============>>#3 票数:10

不要尝试从IDLE运行unittest.main() 它试图访问sys.argv ,它正在获取IDLE启动的args。 要么以与IDLE不同的方式运行测试,要么在自己的Python进程中调用unittest.main()

===============>>#4 票数:5

很高兴能够在第一次尝试unittest模块时证明你的测试工作,并且知道你不会退出Python shell。 但是,这些解决方案取决于版本。

Python 2.6

我在工作中使用Python 2.6, import unittest2 as unittest import (这是在Python 2.7中可以找到的unittest模块)。

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和3

在Python 2.7及更高版本中,以下内容应该有效。

unittest.main(exit=False)

===============>>#5 票数:5

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

===============>>#6 票数:1

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

  ask by Brian Paden translate from so

未解决问题?本站智能推荐:

2回复

单元测试因sys.exit失败

我正在尝试使用unittest运行测试。 这是我的结构: 我用它运行: 但是在一个文件中,例如foo.py ,我使用了sys.exit(0) ,而unittest并不喜欢它: sys.exit()使用是自愿的,我无法将其删除。 我知道unittest.main函数有一
1回复

为sys.exit创建单元测试

我有一个简单的python函数。 我正在使用python 2.6。 如何为此功能创建单元测试? 这是因为sys.exit可以在python 2.7之后的单元测试用例中处理。 谁能让我知道如何为这个简单的代码创建单元测试?
1回复

Python:在单元测试中处理sys.exit吗?

我有一个可以执行操作或可以返回sys.exit()的管理命令。 我正在尝试在单元测试中处理第二种情况: 但这给了我: 我究竟做错了什么? 另外,处理不同情况的最佳方法是什么? 目前,如果脚本未退出,我的测试将失败。
4回复

单元测试是否可以断言方法调用sys.exit()

我有一个python 2.7方法,有时会调用 是否可以进行单元测试以验证在满足正确条件时是否调用此代码行?
1回复

防止unittest调用sys.exit()

我无法阻止Unittest调用sys.exit()。 我发现Unittest导致sys.exit()搜索答案。我将代码修改为 并放在我的主要。 我相信唯一更改的是我的测试在一个名为run_tests.py的单独文件中。 看起来像这样 当我运行主要功能时,出现以下错误 F
4回复

我如何模拟Python方法OptionParser.error(),它执行sys.exit()?

我正在尝试单元测试一些看起来像这样的代码: 使用如下代码: 我正在使用迈克尔福德的模拟 ,并试图进行测试。 当我运行测试时,我得到: 问题是OptionParser.error执行sys.exit(2),因此main()自然依赖于它。 但是nose或unittes
4回复

单元测试模块在脚本中时sys.argv [1]出现问题

我有一个脚本可以执行各种操作并使用sys.argv访问参数,但是当脚本到达代码的unittest部分时,它说没有模块。 我的脚本是: 假设我在命令行输入./script.py Hello 。 我得到的错误是: 如果我删除unittest模块,它的工作原理。 此外,如果我删除
2回复

即使测试失败,单元测试脚本也会返回退出代码= 0

我的测试脚本如下所示: 如果我运行此脚本,则输出为: 退出代码为零: 但是, python文档声明“默认情况下主要调用sys.exit()并带有退出代码,表示测试成功或失败。” 我的脚本出了什么问题?
1回复

Python库默认的NullHandler在单元测试时导致错误

我正在尝试为我正在编写的api库设置默认记录器。 Python文档指出要在库中设置NullHandler,然后让使用该库的开发人员确定应如何处理日志。 注意强烈建议您不要将NullHandler以外的任何其他处理程序添加到库的记录器中。 这是因为处理程序的配置是使用您的库的应用程序
1回复

相关单元测试

我有一个程序,该程序根据输入的参数对象和存储在数据库中的信息给出输出。 我正在尝试使用2个测试用例测试该程序,其中第一个不提供任何参数。 然后,我的程序将创建一个默认参数对象,并将其作为输出的一部分返回,然后第二次测试将对参数对象进行特定更改,并将其作为输入返回给程序。 目前,我通