我们已经将Mock用于python已有一段时间了。
现在,我们要模拟一个函数
def foo(self, my_param):
#do something here, assign something to my_result
return my_result
通常,模拟此方法的方式是(假设foo是对象的一部分)
self.foo = MagicMock(return_value="mocked!")
即使我多次调用foo(),我也可以使用
self.foo = MagicMock(side_effect=["mocked once", "mocked twice!"])
现在,我面临一种情况,当输入参数具有特定值时,我想返回一个固定值。因此,如果说“ my_param”等于“ something”,那么我想返回“ my_cool_mock”
这似乎可以在python的嘲笑上使用
when(dummy).foo("something").thenReturn("my_cool_mock")
我一直在寻找如何通过Mock实现相同的目标而没有成功?
有任何想法吗?
monkeypatch
。Monkeypatch的目的更多是为了“为了测试而替换此功能”,而Mock是您还要检查mock_calls
或对其进行断言等时使用的东西。两者都有一个地方,我经常在给定的测试文件中在不同时间使用两者。