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



我有一个unittest.TestSuite实例。它是一个嵌套TestSuite/TestCase对象的树(任意形状/深度)。

我想获得包含在整个套件中的单个测试id的列表,而不实际运行测试。(类似于nose的"——collect-only"选项)。

我需要递归地走TestSuite,或者在unittest中有我可以重用的东西?有什么建议吗?

这真是太棒了:

通过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)]

最新更新