什么是嘲讽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

回到顶部