单元测试模拟/抑制对象的初始化__

2024-09-28 22:22:25 发布

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

假设我使用一个库的抽象类作为我自己的抽象基类的基,那么

class LibBaseClass():

    some_var = None  # In any non-abstract versions of this class, this must be set

    def __init__(self):
        if some_var is None:
            raise ImproperlyConfigured("some_var Not set!")

现在我有了自己的基类使用这个类。。。你知道吗

class MyBaseClass(LibBaseClass():

    some_var = None  # Still None, doesn't make sense for this var to be set to anything

    def my_additional_method(self):
        ....

现在,当我来测试MyBaseClass时,在setUp()方法中,我想初始化类,因此:

my_class = MyBaseClass()

当然,这会引起库基类init的错误。我正在寻找解决这个问题的最整洁的方法,但我完全不知道该嘲笑什么。这个错误并不重要/不会影响我编写和运行的任何测试,所以我只需要一种避开这个特定错误的方法。你知道吗


Tags: 方法selfnoneinitvardef错误some
1条回答
网友
1楼 · 发布于 2024-09-28 22:22:25

我认为你在设计上有问题:

some_var = None # In any non-abstract versions of this class, this must be set

some_var = None # Still None, doesn't make sense for this var to be set to anything

这两种说法互相矛盾。 因此,您应该设置一些变量,或者在未设置异常时停止生成异常。 另外,如果MyBaseClass应该是抽象的,那么不应该实例化它。你知道吗

编辑:

然而,如果你真的知道你在做什么,你可以很容易地放弃父母__init__

MyBaseClass.__init__ = lambda self: None

相关问题 更多 >