0

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

我想获取整个套件中包含的单个测试 ID 的列表,而无需实际运行测试。(类似于鼻子的“--collect-only”选项)。

我需要递归地走TestSuite,还是有什么东西unittest可以重复使用?有什么技巧可以解决这个问题吗?

4

1 回答 1

3

FWIW,这很好用:

通过测试工具

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)]
于 2013-03-18T23:54:37.603 回答