是否定义了python unittest subTest和skipTest之间的交互?

时间:2016-02-24 09:21:43

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

我没有找到关于Python unittest功能subTestskipTest之间互动的明确答案。

例如,测试它,似乎在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和。

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。但我没有找到任何关于跳过测试的内容。

有人能指出我错过的那段吗?

1 个答案:

答案 0 :(得分:2)

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

.subTest()和.skipTest()交互(以及子测试的常规日志记录)似乎尚未完全解决。 https://bugs.python.org/issue25894https://bugs.python.org/issue35327是与该确切问题相关的两个未解决的错误,自2015年左右开始出现。

截至2020年,两者似乎都尚未开放,因此这还没有解决。