我没有找到关于Python unittest功能subTest
和skipTest
之间互动的明确答案。
例如,测试它,似乎在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
。但我没有找到任何关于跳过测试的内容。
有人能指出我错过的那段吗?
答案 0 :(得分:2)
我暂时没有答案,但是四年后,遇到了与这个问题相同的问题。
.subTest()和.skipTest()交互(以及子测试的常规日志记录)似乎尚未完全解决。 https://bugs.python.org/issue25894和https://bugs.python.org/issue35327是与该确切问题相关的两个未解决的错误,自2015年左右开始出现。
截至2020年,两者似乎都尚未开放,因此这还没有解决。