0
我想模擬一個方法來在我的一個模擬類中返回一個測試值。我遇到的問題是返回測試值,模擬方法返回MagicMock類型的對象。嘲笑python中類對象方法的返回
該代碼是非常人爲的,但說明了這個問題。
SUT(sut.py):
provider = None
class Provider():
def get_data(self):
return 'production data'
def get_provider():
return Provider()
def setup_provider():
global provider
provider = get_provider()
def do_worker():
return provider.get_data()
測試(mocking.py):
sut.get_provider = MagicMock(name='get_provider').return_value = provider_mock
那項任務結合:
import unittest
from mock import MagicMock
import sut
class TestWorker(unittest.TestCase):
def test_worker(self):
provider_mock = MagicMock()
provider_mock.get_data.return_value = 'test data'
sut.get_provider = MagicMock(name='get_provider').return_value = provider_mock
sut.setup_provider()
data = sut.do_worker()
# data comes back as type MagicMock
assert data == 'test data'
十分感謝 - 您的權利我得到一對夫婦線交叉的 - 我已經用C#和Java嘲諷框架花費了大量的時間 - 仍然得到我的腦海裏圍繞蟒蛇纏繞。 – IUnknown