【问题标题】:Python unittest - get TestCase id's from nested TestSuitePython unittest - 从嵌套的TestSuite中获取TestCase id
【发布时间】:2023-03-21 11:15:01
【问题描述】:
我有一个unittest.TestSuite 实例。它是嵌套的 TestSuite/TestCase 对象树(任意形状/深度)。
我想获取包含在整个套件中的单个测试 ID 的列表,而无需实际运行测试。 (类似于鼻子的“--collect-only”选项)。
我是否需要递归遍历TestSuite,或者unittest 中有什么东西可以重复使用?
解决此问题的任何提示?
【问题讨论】:
标签:
python
unit-testing
nose
【解决方案1】:
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)]