Python unittest - 从嵌套的 TestSuite 获取 TestCase ID

0 投票
1 回答
1977 浏览
提问于 2025-04-17 19:34

我有一个 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)]

撰写回答