2017-05-07 35 views
0

通过I类有这样的事情:惩戒作为参数

class ThisClass: 
    def my_method(self, param): 
     # Do normal stuff 
     pass 

class OtherClass: 
    def my_method(self, param): 
     # Do crazy stuff 
     pass 

def useful_function(some_class, some_param): 
    internal = some_class() 
    result = internal.my_method(some_param) 
    uses_result(result) 

# The useful_function can be called with any of the classes 
useful_function(ThisClass, 10) 

我想要做的是检验是否my_method被称为内useful_function。我试图嘲笑类和它的方法,但它没有工作:

# Inside the test class 
def test_case(self): 
    MockSomeClass = mock.Mock() 
    MockSomeClass.my_method.return_value = 'Some useful answer' 
    useful_function(MockSomeClass, 100) 
    MockSomeClass.my_method.assert_called_once() 

误差依赖于我用的my_method结果在uses_result的事实,但如预期的那样嘲笑方法不返回'Some useful answer'。我究竟做错了什么?

回答

1

的模拟必须考虑到的实例some_class()还有:

MockSomeClass.return_value.my_method.return_value = 'Some useful answer' 

internal = some_class() 
internal.my_method() # 'Some useful answer 
+0

它的工作就像一个魅力。只是为了完成答案,断言必须像'MockSomeClass.return_value.my_method.assert_called_once()'完成。谢谢! – lucastamoios