什么是嘲讽Python中的类的多个方法的干净方式?
问题描述:
在编写测试时,我经常需要模拟几个类的方法。目前我正在通过嵌套with
陈述包含mock
引用例如什么是嘲讽Python中的类的多个方法的干净方式?
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
是否有'其他方法一个会在测试中运行的,没有被嘲笑的? – solarissmoke
谢谢@solarissmoke我已经更新了这个问题,补充说可能有也可能没有非模拟方法 –