2

我想get_age()根据传递的参数修补我拥有的方法。

假设我有get_age.py多次使用相同get_age()方法的地方。

get_age("Anna")
...
get_age("Ben")

然后在测试中我想做:

@patch('get_ages.get_age') <-- mock getting age of Ben
@patch('get_ages.get_age') <-- mock getting age of Anna
def test_get_ages(self, age_A, age_B):

如何根据传递的名称模拟相同的方法?谢谢!

4

1 回答 1

2

这可以使用side_effect参数来patch.object调用一个函数来实现,该函数根据输入返回不同的结果。例如:

def find_ages(*args):
    if args[0] == 'Anna':
        # Return Anna's data
        return 18
    elif args[0] == ' Ben':
        # Return Ben's data
        return 45

@patch.object(get_ages, 'get_age', side_effect=find_ages)
def test_get_ages(self, get_age):
于 2020-05-22T17:59:33.337 回答