使用不同的 return 值模拟相同的方法
Mock same method with different return value
我想根据传递的参数修补 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):
如何根据传递的名称模拟相同的方法?谢谢!
这可以通过使用 side_effect
参数到 patch.object
来调用一个函数来实现,该函数 returns 根据输入得到不同的结果。例如:
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):
我想根据传递的参数修补 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):
如何根据传递的名称模拟相同的方法?谢谢!
这可以通过使用 side_effect
参数到 patch.object
来调用一个函数来实现,该函数 returns 根据输入得到不同的结果。例如:
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):