diff --git a/odoo/modules/module.py b/odoo/modules/module.py
index dda40b6a8dc0bebaa22b2c11847817c31ebd7666..354f796f495ebf1d78014f38f51389539ed86a41 100644
--- a/odoo/modules/module.py
+++ b/odoo/modules/module.py
@@ -19,6 +19,7 @@ import threading
 import warnings
 from operator import itemgetter
 from os.path import join as opj
+from pathlib import Path
 
 import odoo
 import odoo.tools as tools
@@ -472,7 +473,7 @@ def get_test_modules(module):
     except ImportError:
         pass
     else:
-        results += _get_tests_modules('odoo.upgrade', module)
+        results += list(_get_upgrade_test_modules(module))
 
     return results
 
@@ -499,6 +500,18 @@ def _get_tests_modules(path, module):
               if name.startswith('test_')]
     return result
 
+def _get_upgrade_test_modules(module):
+    upg = importlib.import_module("odoo.upgrade")
+    for path in map(Path, upg.__path__):
+        for test in (path / module / "tests").glob("test_*.py"):
+            spec = importlib.util.spec_from_file_location(f"odoo.upgrade.{module}.tests.{test.stem}", test)
+            if not spec:
+                continue
+            pymod = importlib.util.module_from_spec(spec)
+            sys.modules[spec.name] = pymod
+            spec.loader.exec_module(pymod)
+            yield pymod
+
 
 class OdooTestResult(unittest.result.TestResult):
     """