refactor: simplify module loading by introducing dynamicLoadModule function

This commit is contained in:
chenhaoran 2025-02-25 21:14:07 +08:00
parent 7bbc42aa30
commit 67c06cc02b
6 changed files with 54 additions and 24 deletions

View File

@ -369,8 +369,7 @@ if __name__ == "__main__":
updateCfgDictStr = ''
# adapter_cfg_dict_str = ''
if is_test_framework:
moduleName = fileName.replace(".py", "").replace(os.sep, ".")
uModule = importlib.import_module(moduleName)
uModule = dynamicLoadModule(fileName)
try:
case_class = getattr(uModule, get_local_classes(uModule)[-1])
ucase = case_class()
@ -542,8 +541,7 @@ if __name__ == "__main__":
except:
pass
if is_test_framework:
moduleName = fileName.replace(".py", "").replace("/", ".")
uModule = importlib.import_module(moduleName)
uModule = dynamicLoadModule(fileName)
try:
case_class = getattr(uModule, get_local_classes(uModule)[-1])
ucase = case_class()

View File

@ -22,6 +22,9 @@ import json
import platform
import socket
import threading
import inspect
import importlib
import os
import toml
@ -56,6 +59,17 @@ def checkRunTimeError():
if hwnd:
os.system("TASKKILL /F /IM taosd.exe")
def get_local_classes(module):
classes = []
for name, obj in inspect.getmembers(module, inspect.isclass):
if inspect.getmodule(obj) == module:
classes.append(name)
return classes
def dynamicLoadModule(fileName):
moduleName = fileName.replace(".py", "").replace(os.sep, ".")
return importlib.import_module(moduleName, package='..')
if __name__ == "__main__":
@ -295,8 +309,7 @@ if __name__ == "__main__":
updateCfgDictStr = ""
# adapter_cfg_dict_str = ''
if is_test_framework:
moduleName = fileName.replace(".py", "").replace(os.sep, ".")
uModule = importlib.import_module(moduleName)
uModule = dynamicLoadModule(fileName)
try:
case_class = getattr(uModule, get_local_classes(uModule)[-1])
ucase = case_class()
@ -435,8 +448,7 @@ if __name__ == "__main__":
except:
pass
if is_test_framework:
moduleName = fileName.replace(".py", "").replace("/", ".")
uModule = importlib.import_module(moduleName)
uModule = dynamicLoadModule(fileName)
try:
case_class = getattr(uModule, get_local_classes(uModule)[-1])
ucase = case_class()

View File

@ -147,8 +147,7 @@ if __name__ == "__main__":
except:
pass
if is_test_framework:
moduleName = fileName.replace(".py", "").replace(os.sep, ".")
uModule = importlib.import_module(moduleName)
uModule = dynamicLoadModule(fileName)
try:
ucase = uModule.TDTestCase()
tdDnodes.deploy(1,ucase.updatecfgDict)
@ -181,8 +180,7 @@ if __name__ == "__main__":
except:
pass
if is_test_framework:
moduleName = fileName.replace(".py", "").replace("/", ".")
uModule = importlib.import_module(moduleName)
uModule = dynamicLoadModule(fileName)
try:
ucase = uModule.TDTestCase()
tdDnodes.deploy(1,ucase.updatecfgDict)

View File

@ -63,7 +63,9 @@ class TDCases:
runNum = 0
for tmp in self.linuxCases:
if tmp.name.find(fileName) != -1:
case = testModule.TDTestCase()
# get the last class name as the test case class name
case_class = getattr(testModule, self.get_local_classes(testModule)[0])
case = case_class()
case.init(conn)
case.run()
case.stop()
@ -98,7 +100,9 @@ class TDCases:
runNum = 0
for tmp in self.windowsCases:
if tmp.name.find(fileName) != -1:
case = testModule.TDTestCase()
# get the last class name as the test case class name
case_class = getattr(testModule, self.get_local_classes(testModule)[-1])
case = case_class()
case.init(conn)
case.run()
case.stop()

View File

@ -24,6 +24,7 @@ import platform
import socket
import threading
import importlib
import inspect
print(f"Python version: {sys.version}")
print(f"Version info: {sys.version_info}")
@ -58,6 +59,17 @@ def checkRunTimeError():
if hwnd:
os.system("TASKKILL /F /IM taosd.exe")
def get_local_classes(module):
classes = []
for name, obj in inspect.getmembers(module, inspect.isclass):
if inspect.getmodule(obj) == module:
classes.append(name)
return classes
def dynamicLoadModule(fileName):
moduleName = fileName.replace(".py", "").replace(os.sep, ".")
return importlib.import_module(moduleName, package='..')
#
# run case on previous cluster
#
@ -69,7 +81,6 @@ def runOnPreviousCluster(host, config, fileName):
if platform.system().lower() == 'windows':
sep = os.sep
uModule = dynamicLoadModule(fileName)
case_class = getattr(uModule, get_local_classes(uModule)[-1])
case = case_class()
@ -351,8 +362,7 @@ if __name__ == "__main__":
updateCfgDictStr = ''
# adapter_cfg_dict_str = ''
if is_test_framework:
moduleName = fileName.replace(".py", "").replace(os.sep, ".")
uModule = importlib.import_module(moduleName)
uModule = dynamicLoadModule(fileName)
try:
case_class = getattr(uModule, get_local_classes(uModule)[-1])
ucase = case_class()
@ -524,8 +534,7 @@ if __name__ == "__main__":
except:
pass
if is_test_framework:
moduleName = fileName.replace(".py", "").replace("/", ".")
uModule = importlib.import_module(moduleName)
uModule = dynamicLoadModule(fileName)
try:
case_class = getattr(uModule, get_local_classes(uModule)[-1])
ucase = case_class()

View File

@ -24,6 +24,7 @@ import platform
import socket
import threading
import importlib
import inspect
print(f"Python version: {sys.version}")
print(f"Version info: {sys.version_info}")
@ -58,6 +59,17 @@ def checkRunTimeError():
if hwnd:
os.system("TASKKILL /F /IM taosd.exe")
def get_local_classes(module):
classes = []
for name, obj in inspect.getmembers(module, inspect.isclass):
if inspect.getmodule(obj) == module:
classes.append(name)
return classes
def dynamicLoadModule(fileName):
moduleName = fileName.replace(".py", "").replace(os.sep, ".")
return importlib.import_module(moduleName, package='..')
#
# run case on previous cluster
#
@ -69,7 +81,6 @@ def runOnPreviousCluster(host, config, fileName):
if platform.system().lower() == 'windows':
sep = os.sep
uModule = dynamicLoadModule(fileName)
case_class = getattr(uModule, get_local_classes(uModule)[-1])
case = case_class()
@ -351,8 +362,7 @@ if __name__ == "__main__":
updateCfgDictStr = ''
# adapter_cfg_dict_str = ''
if is_test_framework:
moduleName = fileName.replace(".py", "").replace(os.sep, ".")
uModule = importlib.import_module(moduleName)
uModule = dynamicLoadModule(fileName)
try:
case_class = getattr(uModule, get_local_classes(uModule)[-1])
ucase = case_class()
@ -524,8 +534,7 @@ if __name__ == "__main__":
except:
pass
if is_test_framework:
moduleName = fileName.replace(".py", "").replace("/", ".")
uModule = importlib.import_module(moduleName)
uModule = dynamicLoadModule(fileName)
try:
case_class = getattr(uModule, get_local_classes(uModule)[-1])
ucase = case_class()