我有一个unittest.TestSuite
实例。它是一个嵌套TestSuite/TestCase对象的树(任意形状/深度)。
我想获得包含在整个套件中的单个测试id的列表,而不实际运行测试。(类似于nose的"——collect-only"选项)。
我需要递归地走TestSuite
,或者在unittest
中有我可以重用的东西?有什么建议吗?
这真是太棒了:
通过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)]