【发布时间】:2016-02-24 09:21:43
【问题描述】:
我还没有找到关于 Python 单元测试功能 subTest 和 skipTest 之间交互的明确答案。
例如,测试它时,似乎在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