我想测试一个递归函数,然后模拟出同样的函数。对于第一次调用,我想实际调用出现在我的模块中的函数。当它调用自己时,我想使用mock 模拟调用并指定第二个递归调用的返回值。
我的意思的一个非常简单的例子:
def some_function(input_value):
if input_value == some_appropriate_value:
return foo
else:
return some_function(some_other_value)
我如何some_function
在第二次调用它时模拟出来?如果我使用 @mock.patch 装饰器之类的东西,我实际上无法对其进行测试,因为some_function
所有调用都会被模拟出来。
关于如何做到这一点的任何建议?我找不到任何明显的 Stack Overflow 问题来讨论这个问题。