From 97a9b604a30d6105cca14d7355e8faee8fa50fd0 Mon Sep 17 00:00:00 2001 From: David Date: Wed, 4 Sep 2024 19:43:05 +0200 Subject: [PATCH] fix: test module + test case + test method name --- frappe/test_runner.py | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/frappe/test_runner.py b/frappe/test_runner.py index 6f20de3d87..ccbec643eb 100644 --- a/frappe/test_runner.py +++ b/frappe/test_runner.py @@ -266,23 +266,29 @@ def _run_unittest( ): frappe.db.begin() - test_suite = unittest.TestSuite() + final_test_suite = unittest.TestSuite() if not isinstance(modules, list | tuple): modules = [modules] + def iterate_suite(suite): + for test in suite: + if isinstance(test, unittest.TestSuite): + yield from iterate_suite(test) + elif isinstance(test, unittest.TestCase): + yield test + for module in modules: if case: - module_test_cases = unittest.TestLoader().loadTestsFromTestCase(getattr(module, case)) + test_suite = unittest.TestLoader().loadTestsFromTestCase(getattr(module, case)) else: - module_test_cases = unittest.TestLoader().loadTestsFromModule(module) + test_suite = unittest.TestLoader().loadTestsFromModule(module) if tests: - for each in module_test_cases: - for test_case in each.__dict__["_tests"]: - if test_case.__dict__["_testMethodName"] in tests: - test_suite.addTest(test_case) + for test_case in iterate_suite(test_suite): + if test_case._testMethodName in tests: + final_test_suite.addTest(test_case) else: - test_suite.addTest(module_test_cases) + final_test_suite.addTest(test_suite) if junit_xml_output: runner = unittest_runner(verbosity=1 + cint(verbose), failfast=failfast) @@ -300,7 +306,7 @@ def _run_unittest( frappe.flags.tests_verbose = verbose - out = runner.run(test_suite) + out = runner.run(final_test_suite) if profile: pr.disable()