我正在使用python的unittest.Mock框架。
我想用mock实现以下目标:
原始方法如下:
def mymethod(para1, para2, para3):
return para1 + para2 + para3
我想嘲笑它以返回第一个para1 - 丢弃其余部分:
def mymethod(para1, para2, para3):
return para1
我看到我们可以设置一个模拟对象的return_value,但似乎只是一个硬编码的对象。我看到我们可以得到一个模拟调用的参数,但只有在调用之后才能获得。 - 有没有办法获取参数并动态返回它?
答案 0 :(得分:2)
使用模拟类的side_effect
:
import mock
def mymethod(para1, para2, para3):
return para1 + para2 + para3
m = mock.Mock(side_effect=lambda *args: args[0])
with mock.patch('__main__.mymethod', m):
assert mymethod(1, 2, 3) == 1