我可以将实例方法添加到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