我有一个unittest.TestSuite
个实例。它是嵌套的TestSuite / TestCase对象树(任意形状/深度)。
我想获得整个套件中包含的单个测试ID的列表,而不是实际运行测试。 (类似于鼻子的“ - 仅收集”选项)。
我是否需要以递归方式行走TestSuite
,或者unittest
我可以重复使用某些内容吗?
接近这个的任何提示?
答案 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)]