gpt4 book ai didi

python - 基于输入参数模拟python函数

转载 作者:IT老高 更新时间:2023-10-28 21:05:33 25 4
gpt4 key购买 nike

我们一直在使用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”

这似乎在 mockito for python 上可用

when(dummy).foo("something").thenReturn("my_cool_mock")

我一直在寻找如何通过 Mock 实现同样的目标,但没有成功?

有什么想法吗?

最佳答案

If side_effect_func is a function then whatever that function returns iswhat calls to the mock return. The side_effect_func function is called withthe same arguments as the mock. This allows you to vary the returnvalue of the call dynamically, based on the input:

>>> def side_effect_func(value):
... return value + 1
...
>>> m = MagicMock(side_effect=side_effect_func)
>>> m(1)
2
>>> m(2)
3
>>> m.mock_calls
[call(1), call(2)]

http://www.voidspace.org.uk/python/mock/mock.html#calling

关于python - 基于输入参数模拟python函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16162015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com