我有一个unittest.TestSuite
例子。它是嵌套的 TestSuite/TestCase 对象(任意形状/深度)的树。
我想获取整个套件中包含的单个测试 ID 的列表,而无需实际运行测试。(类似于鼻子的“--collect-only”选项)。
我需要递归地走TestSuite
,还是有什么东西unittest
可以重复使用?有什么技巧可以解决这个问题吗?
我有一个unittest.TestSuite
例子。它是嵌套的 TestSuite/TestCase 对象(任意形状/深度)的树。
我想获取整个套件中包含的单个测试 ID 的列表,而无需实际运行测试。(类似于鼻子的“--collect-only”选项)。
我需要递归地走TestSuite
,还是有什么东西unittest
可以重复使用?有什么技巧可以解决这个问题吗?
FWIW,这很好用:
通过测试工具:
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)]