在python中获取模拟方法的参数

时间:2013-08-26 04:15:27

标签: python unit-testing mocking

我正在使用python的unittest.Mock框架。

我想用mock实现以下目标:

原始方法如下:

def mymethod(para1, para2, para3):
    return para1 + para2 + para3

我想嘲笑它以返回第一个para1 - 丢弃其余部分:

def mymethod(para1, para2, para3):
    return para1

我看到我们可以设置一个模拟对象的return_value,但似乎只是一个硬编码的对象。我看到我们可以得到一个模拟调用的参数,但只有在调用之后才能获得。 - 有没有办法获取参数并动态返回它?

1 个答案:

答案 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