• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

什么是嘲讽Python中的类的多个方法的干净方式?

python 来源:Stuart Dines 6次浏览

在编写测试时,我经常需要模拟几个类的方法。目前我正在通过嵌套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 

版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)