Refs #32489 -- Doc'd and tested iter_test_cases() support for an iterable of tests.

This commit is contained in:
Chris Jerdonek 2021-03-09 23:12:44 -08:00 committed by Mariusz Felisiak
parent a2d5ea626e
commit d8a4bcffdb
2 changed files with 21 additions and 3 deletions

View File

@ -235,9 +235,13 @@ def setup_databases(
return old_names
def iter_test_cases(suite):
"""Return an iterator over a test suite's unittest.TestCase objects."""
for test in suite:
def iter_test_cases(tests):
"""
Return an iterator over a test suite's unittest.TestCase objects.
The tests argument can also be an iterable of TestCase objects.
"""
for test in tests:
if isinstance(test, TestCase):
yield test
else:

View File

@ -89,6 +89,20 @@ class TestSuiteTests(unittest.TestCase):
'Tests1.test1', 'Tests1.test2', 'Tests2.test1', 'Tests2.test2',
])
def test_iter_test_cases_iterable_of_tests(self):
class Tests(unittest.TestCase):
def test1(self):
pass
def test2(self):
pass
tests = list(unittest.defaultTestLoader.loadTestsFromTestCase(Tests))
actual_tests = iter_test_cases(tests)
self.assertTestNames(actual_tests, expected=[
'Tests.test1', 'Tests.test2',
])
def test_iter_test_cases_custom_test_suite_class(self):
suite = self.make_test_suite(suite_class=MySuite)
tests = iter_test_cases(suite)