2013-03-18 69 views
0

我有一个unittest.TestSuite实例。它是嵌套TestSuite/TestCase对象(任意形状/深度)的树。Python单元测试 - 从嵌套TestSuite获取TestCase ID

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

我需要递归走TestSuite,还是有什么unittest我可以重复使用吗? 接近这个的任何提示?

回答

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