2013-03-18 37 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)]