从 3.4 版开始,Python在编写 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 ...
在本例中),以获得完整的画面。
这unittest
在 Python 中的普通模块有可能吗?鼻子测试生成器功能将单独输出每个测试,但如果可能的话,我希望与标准库保持兼容。