如何编写通用的单元测试来测试python中的插件类

如何编写通用的单元测试来测试python中的插件类,python,Python,我有一个基本的契约类,可以继承它来提供插件功能。我正在使用setuptools入口点添加新插件,比如 entry_points=""" [plugins] plugin1=plugins.plugin1:Plugin1 """ 课程看起来像 class Plugin: __metaclass__ = abc.ABCMeta @abstractmethod def must_override_method(): pass @abstractme

我有一个基本的契约类,可以继承它来提供插件功能。我正在使用setuptools入口点添加新插件,比如

entry_points="""
[plugins]
plugin1=plugins.plugin1:Plugin1
"""
课程看起来像

class Plugin:
    __metaclass__ = abc.ABCMeta

    @abstractmethod
    def must_override_method():
        pass

    @abstractmethod
    def must_override_method2():
        pass


#./plugins/plugin1.py
#Actually the plugins could be anywhere

class Plugin1(Plugin):

    def must_override_method():
        print("Hello")
虽然
@abstracmethod
不允许我在运行时实例化类,如果
必须覆盖\u方法未定义,但我应该如何为尚未编写的插件添加单元测试


有没有一种简单的方法来编写泛型测试,捕获测试时不实现抽象方法的“插件”?

我认为,最好的方法是对抽象类使用模拟。模拟是一种不会真正创建对象或尝试创建对象的机制。相反,它将创建一个具有相同属性的模拟对象。请对相同的

使用模拟模块,我认为这不能解决问题,因为我不尝试测试任何方法的响应或实现。我试图通过检查插件调用是否正确实例化来测试插件是否有效。