簡體   English   中英

模擬作為參數傳遞的類

[英]Mocking a class passed as argument

我有這樣的事情:

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()

該錯誤取決於以下事實:我在uses_result使用了my_method的結果,但該uses_result方法未按預期返回'Some useful answer' 我究竟做錯了什么?

該模擬還必須考慮實例化some_class()

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM