【发布时间】:2017-07-10 08:37:15
【问题描述】:
自 3.4 版起,Python supports a simple subtest syntax when writing unittests。一个简单的例子可能如下所示:
import unittest
class NumbersTest(unittest.TestCase):
def test_successful(self):
"""A test with subtests that will all succeed."""
for i in range(0, 6):
with self.subTest(i=i):
self.assertEqual(i, i)
if __name__ == '__main__':
unittest.main()
运行测试时,输出将是
python3 test_foo.py --verbose
test_successful (__main__.NumbersTest)
A test with subtests that will all succeed. ... ok
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
但是,在我的实际用例中,子测试将依赖于更复杂的迭代,并检查每个子测试非常不同的内容。因此,我宁愿在输出中计算每个子测试并将其列为单独的测试用例(在此示例中为Ran 6 tests in ...),以获得完整的图片。
这在 Python 中使用普通的 unittest 模块是否可能? The nose test generator feature 会分别输出每个测试,但我希望尽可能与标准库保持兼容。
【问题讨论】:
标签: python unit-testing python-unittest parameterized-unit-test