使用不同导入方法从同一类生成的两个对象,isinstance()==Fals

2024-05-14 08:11:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在工作的项目中对一些动态导入进行单元测试。我的想法是手动导入我希望动态加载的类,并验证动态创建的对象实际上是我手动导入的类的实例。你知道吗

到目前为止,我还没能让这个工作。下面是一些示例代码,希望能解释我的意思。你知道吗

SomeApi: 这是稍后将动态加载的类。你知道吗

此文件的路径是/path/to/file/SomeApi.py公司你知道吗

class SomeApi(object):
    def __init__(self):
        self.a = "a"
        self.b = "b"
        self.c = "c"

单元测试文件 这是我将执行测试的文件。它将手动和动态导入SomeApi。你知道吗

from path.to.file.SomeApi import SomeApi


class MyTests(unittest.TestCase):
    def import_test():
        dyn_loaded_module = importlib.import_module("Path.to.file.SomeApi", "SomeApi")
        dyn_loaded_class = getattr(dyn_loaded_module, "SomeApi")
        dyn_loaded_api = dyn_loaded_class()  # Create an instance of the dynamically imported class.
        manual_import_api = SomeApi()  # Create an instance of the manually loaded class.
        assert isinstance(manual_import_api, SomeApi)  # This returns True as expected.
        assert isinstance(dyn_loaded_api, SomeApi)  # This returns False, I am not sure why.

所以基本上我的问题是,为什么动态创建的对象不是手动导入类的实例。你知道吗

另外,这是测试这个的正确方法吗?你知道吗


Tags: 文件toimportselfapi动态手动单元测试

热门问题