编程语言
首页 > 编程语言> > 我可以将实例方法添加到Python“模拟”对象吗?

我可以将实例方法添加到Python“模拟”对象吗?

作者:互联网

我想创建一个mock.Mock()对象,然后添加一个称为session的方法,该方法的作用类似于实例方法,该方法将自引用传递给该模拟对象,从而允许该方法向该模拟对象添加状态.这是否有可能(无需手动使用types.MethodType,例如使用模拟的内置API),还是应该找到解决方法?

注意,我发现了this question,它是针对Ruby的,似乎涵盖了相似的东西,即使不是同一件事.不幸的是,我一点都不了解Ruby.

解决方法:

如果要增强嘲笑类的功能,只需对Mock子类化并添加自己的方法即可.

class MyMock(Mock):
    def session(self):
        # Save session data here?

模拟documentation解释说,要创建新的模拟时,它将与父代具有相同的类型.这意味着会话功能也将在模拟期间创建的任何其他模拟上可用.

这不涉及需要将会话函数动态附加到现有模拟对象的情况.

标签:python-mock,python
来源: https://codeday.me/bug/20191031/1975219.html