什么是嘲讽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
以上是 什么是嘲讽Python中的类的多个方法的干净方式? 的全部内容, 来源链接: utcz.com/qa/260619.html