我想创建一个mock.Mock()
对象,然后添加一个称为session
实例方法的方法,该方法传递一个self
对模拟对象的引用,允许该方法向模拟对象添加状态。这是否可能(无需手动使用types.MethodType
,例如使用 mock 的内置 API),还是我应该找到解决方法?
请注意,我发现了这个问题,它是针对 Ruby 的,并且似乎涵盖了类似的内容,如果不是同一件事的话。不幸的是,我一点也不了解 Ruby。
我想创建一个mock.Mock()
对象,然后添加一个称为session
实例方法的方法,该方法传递一个self
对模拟对象的引用,允许该方法向模拟对象添加状态。这是否可能(无需手动使用types.MethodType
,例如使用 mock 的内置 API),还是我应该找到解决方法?
请注意,我发现了这个问题,它是针对 Ruby 的,并且似乎涵盖了类似的内容,如果不是同一件事的话。不幸的是,我一点也不了解 Ruby。
如果您想增强mock.Mock
类的功能,只需子类化Mock
并添加您自己的方法。
class MyMock(Mock):
def session(self):
# Save session data here?
模拟文档解释说,当要创建一个新模拟时,它将与父级相同。这意味着该session
函数也将在模拟期间创建的任何其他模拟上可用。
这不包括您需要将session
函数动态附加到现有模拟对象的情况。
mock_answer = Mock()
def session():
mock_answer.b = 1
mock_answer.session = session
mock_answer.session()
print(mock_answer.b) # 1
self
你其实不需要。