在编写测试时,我经常面临需要模拟多个类方法的情况。目前,我通过嵌套包含 mock
引用的 with
语句来实现此目的,例如
from ... import A
def test_sample(self)
instance = A()
with mock(A, 'function_1', return_value=1):
with mock(A, 'function_2', return_value=2):
with mock(A, 'function_3', return_value=3):
assert A.function_4, 10
有没有更简洁/推荐的方法来做到这一点?如果能够删除多个嵌套调用,那就太好了!
在此过程中,类上可能有也可能没有其他未被模拟的方法。
最佳答案
您不需要嵌套上下文管理器 - 您可以一次性修补所有方法:
def test_sample(self)
instance = A()
with (mock(A, 'function_1', return_value=1),
mock(A, 'function_2', return_value=2),
mock(A, 'function_3', return_value=3)):
assert A.function_4, 10
或者您可以使用patch.multiple
:
from unittest import patch
def test_sample(self)
instance = A()
with patch.multiple(A, function_1=2, function_2=2, function_3=3) as patched_values:
assert A.function_4, 10
关于python - 在 python 中模拟类上的多个方法的干净方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47861616/