generalize helper for loading module from source (#2862)
This commit is contained in:
7
api/tests/integration_tests/utils/child_class.py
Normal file
7
api/tests/integration_tests/utils/child_class.py
Normal file
@@ -0,0 +1,7 @@
|
||||
from tests.integration_tests.utils.parent_class import ParentClass
|
||||
|
||||
|
||||
class ChildClass(ParentClass):
|
||||
def __init__(self, name: str):
|
||||
super().__init__(name)
|
||||
self.name = name
|
7
api/tests/integration_tests/utils/lazy_load_class.py
Normal file
7
api/tests/integration_tests/utils/lazy_load_class.py
Normal file
@@ -0,0 +1,7 @@
|
||||
from tests.integration_tests.utils.parent_class import ParentClass
|
||||
|
||||
|
||||
class LazyLoadChildClass(ParentClass):
|
||||
def __init__(self, name: str):
|
||||
super().__init__(name)
|
||||
self.name = name
|
6
api/tests/integration_tests/utils/parent_class.py
Normal file
6
api/tests/integration_tests/utils/parent_class.py
Normal file
@@ -0,0 +1,6 @@
|
||||
class ParentClass:
|
||||
def __init__(self, name):
|
||||
self.name = name
|
||||
|
||||
def get_name(self):
|
||||
return self.name
|
@@ -0,0 +1,32 @@
|
||||
import os
|
||||
|
||||
from core.utils.module_import_helper import load_single_subclass_from_source, import_module_from_source
|
||||
from tests.integration_tests.utils.parent_class import ParentClass
|
||||
|
||||
|
||||
def test_loading_subclass_from_source():
|
||||
current_path = os.getcwd()
|
||||
module = load_single_subclass_from_source(
|
||||
module_name='ChildClass',
|
||||
script_path=os.path.join(current_path, 'child_class.py'),
|
||||
parent_type=ParentClass)
|
||||
assert module and module.__name__ == 'ChildClass'
|
||||
|
||||
|
||||
def test_load_import_module_from_source():
|
||||
current_path = os.getcwd()
|
||||
module = import_module_from_source(
|
||||
module_name='ChildClass',
|
||||
py_file_path=os.path.join(current_path, 'child_class.py'))
|
||||
assert module and module.__name__ == 'ChildClass'
|
||||
|
||||
|
||||
def test_lazy_loading_subclass_from_source():
|
||||
current_path = os.getcwd()
|
||||
clz = load_single_subclass_from_source(
|
||||
module_name='LazyLoadChildClass',
|
||||
script_path=os.path.join(current_path, 'lazy_load_class.py'),
|
||||
parent_type=ParentClass,
|
||||
use_lazy_loader=True)
|
||||
instance = clz('dify')
|
||||
assert instance.get_name() == 'dify'
|
Reference in New Issue
Block a user