Python unittest - 从嵌套的 TestSuite 获取 TestCase ID
我有一个 unittest.TestSuite
实例。它是一个包含嵌套的 TestSuite 和 TestCase 对象的树状结构(形状和深度都可以随意)。
我想要获取整个测试套件中所有单独测试的 ID 列表,但不想实际运行这些测试。(这有点像 nose 的 "--collect-only" 选项)。
我需要递归地遍历 TestSuite
吗?还是说在 unittest
中有什么可以重复使用的东西?对此有什么建议吗?
1 个回答
3
顺便说一下,这个方法效果很好:
通过 testtools:
def iterate_tests(test_suite_or_case):
"""Iterate through all of the test cases in 'test_suite_or_case'."""
try:
suite = iter(test_suite_or_case)
except TypeError:
yield test_suite_or_case
else:
for test in suite:
for subtest in iterate_tests(test):
yield subtest
你可以使用 testtools.testsuite.iterate_tests(suite)
来遍历嵌套的测试套件。比如,可以用列表推导式来获取测试 ID 的列表:
[test.id() for test in testtools.testsuite.iterate_tests(suite)]