Python unittest - 从嵌套的TestSuite中获取TestCase id

时间:2013-03-18 21:47:44

标签: python unit-testing nose

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

我想获得整个套件中包含的单个测试ID的列表,而不是实际运行测试。 (类似于鼻子的“ - 仅收集”选项)。

我是否需要以递归方式行走TestSuite,或者unittest我可以重复使用某些内容吗? 接近这个的任何提示?

1 个答案:

答案 0 :(得分:2)

FWIW,这很有效:

通过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)]
相关问题