【问题标题】:Is the interaction between python unittest subTest and skipTest defined?python unittest subTest 和 skipTest 之间的交互是否定义了?
【发布时间】:2016-02-24 09:21:43
【问题描述】:

我还没有找到关于 Python 单元测试功能 subTestskipTest 之间交互的明确答案。

例如,测试它时,似乎在subTest 上下文中调用skipTest 时(Python 3.4 中的新功能),只有当前的 subTest 被跳过。允许围绕subTest 的任何循环继续使用其他值。

from unittest import TestCase

class NumbersTest(TestCase):
    def test_even(self):
        """
        Test that numbers between 0 and 5 are all even.
        """
        for i in range(0, 6):
            with self.subTest(i=i):
                if i==3:
                    self.skipTest("Skip 3.")
                self.assertEqual( i%2, 0 )

输出显示测试在跳过 3 后继续使用值 4 和 5。

test_even (TestUnitSubTest.NumbersTest) ... skipped 'Skip 3.'

======================================================================
FAIL: test_even (TestUnitSubTest.NumbersTest) (i=1)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "~/TestUnitSubTest.py", line 14, in test_even
    self.assertEqual( i%2, 0 )
AssertionError: 1 != 0

======================================================================
FAIL: test_even (TestUnitSubTest.NumbersTest) (i=5)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "~/TestUnitSubTest.py", line 14, in test_even
    self.assertEqual( i%2, 0 )
AssertionError: 1 != 0

----------------------------------------------------------------------
Ran 1 test in 0.002s

FAILED (failures=2, skipped=1)

我在 Python 文档中没有找到明确的答案。它举例来说,如果一个断言在subTest 上下文中失败,那么进一步的subTest 将执行。但我没有发现任何关于跳过测试的信息。

谁能指出我错过的段落?

【问题讨论】:

    标签: python python-3.x python-unittest


    【解决方案1】:

    我本身没有答案,但四年后,遇到了与这个问题相同的问题。

    看起来 .subTest() 和 .skipTest() 交互(以及子测试的一般日志记录)尚未完全解决。 https://bugs.python.org/issue25894https://bugs.python.org/issue35327 是与这个确切问题相关的两个开放错误,自 2015 年左右开放。

    截至 2020 年,看起来两者都还在营业,所以这还没有解决。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-31
      • 1970-01-01
      • 1970-01-01
      • 2010-12-31
      • 1970-01-01
      • 2011-09-07
      • 1970-01-01
      相关资源
      最近更新 更多