fix: test module + test case + test method name

This commit is contained in:
David 2024-09-04 19:43:05 +02:00
parent 349e9c67f3
commit 97a9b604a3
No known key found for this signature in database
GPG key ID: AB15A6AF1101390D

View file

@ -266,23 +266,29 @@ def _run_unittest(
): ):
frappe.db.begin() frappe.db.begin()
test_suite = unittest.TestSuite() final_test_suite = unittest.TestSuite()
if not isinstance(modules, list | tuple): if not isinstance(modules, list | tuple):
modules = [modules] 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: for module in modules:
if case: if case:
module_test_cases = unittest.TestLoader().loadTestsFromTestCase(getattr(module, case)) test_suite = unittest.TestLoader().loadTestsFromTestCase(getattr(module, case))
else: else:
module_test_cases = unittest.TestLoader().loadTestsFromModule(module) test_suite = unittest.TestLoader().loadTestsFromModule(module)
if tests: if tests:
for each in module_test_cases: for test_case in iterate_suite(test_suite):
for test_case in each.__dict__["_tests"]: if test_case._testMethodName in tests:
if test_case.__dict__["_testMethodName"] in tests: final_test_suite.addTest(test_case)
test_suite.addTest(test_case)
else: else:
test_suite.addTest(module_test_cases) final_test_suite.addTest(test_suite)
if junit_xml_output: if junit_xml_output:
runner = unittest_runner(verbosity=1 + cint(verbose), failfast=failfast) runner = unittest_runner(verbosity=1 + cint(verbose), failfast=failfast)
@ -300,7 +306,7 @@ def _run_unittest(
frappe.flags.tests_verbose = verbose frappe.flags.tests_verbose = verbose
out = runner.run(test_suite) out = runner.run(final_test_suite)
if profile: if profile:
pr.disable() pr.disable()