【问题标题】:How to run Python's unittest.TestSuite() with -v flag?如何使用 -v 标志运行 Python 的 unittest.TestSuite()?
【发布时间】:2019-03-28 06:48:51
【问题描述】:

我正在使用:

我知道nosepy.test 提供了比普通单元测试更多的可能性。不过,这里的目标是坚持当前的环境。


我的suite.py 文件位于/tests 目录中,如下所示:

import unittest

loader = unittest.TestLoader()
suite = loader.discover('.')

runner = unittest.TextTestRunner()
runner.run(suite)

我以这种方式(从项目的根目录)运行它:

python -m unittest tests/suite.py

这会运行来自/tests 目录的所有TestCases 并产生如下输出(在控制台中):

......ss....s............s.....s.s....s.....................s....ss.....s......s......s..........s...........s.....s.....s....s
----------------------------------------------------------------------
Ran 117 tests in 54.110s

OK (skipped=13)

----------------------------------------------------------------------
Ran 0 tests in 0.000s

OK

问题是:

  1. 第二部分输出什么

    ----------------------------------------------------------------------
    Ran 0 tests in 0.000s
    
    OK
    

    也就是说,指的是(以及为什么存在)?

  2. 如何通过运行套件获得详细的输出(即每个测试的状态,与从项目根目录运行 python -m unittest -v 时相同)?我试过python -m unittest -v tests/suite.py,但没有成功。

【问题讨论】:

    标签: python python-3.x python-2.7 unit-testing python-unittest


    【解决方案1】:

    嗯,as is it sometimes happens,我找到了自己问题的答案。实际上,answer to another question 让我知道了我错过了什么。


    我发现的答案是:

    1. 控制台输出的第二部分:

      ----------------------------------------------------------------------
      Ran 0 tests in 0.000s
      
      OK
      

      指的是当前模块中的测试(即运行的文件),在这种情况下 - suite.py。由于文件本身不包含TestCases,因此输出为“空白”(可以轻松验证:创建一个空文件test.py,然后以python -m unittest tests/test.py 启动它——您将看到与上面完全相同的输出)。

    2. 为了从TestSuite 运行中获得详细的输出——TestSuite 的创建必须包装在一个方法中(返回创建的TestSuite),然后不是一个模块,而是一个方法必须传递给python -m unittest -v
      因此,suite.py 必须更改为:

      import unittest
      
      def suite():
          loader = unittest.TestLoader()
          suite = loader.discover('.')
          return suite
      

      然后它应该通过python -m unittest -v tests.suite.suite 启动,这会给出每个测试的详细状态并避免不必要的... Ran 0 tests in 0.000s ... 输出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-02
      • 2020-07-24
      • 2013-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多