モック クラスの 1 つでテスト値を返すメソッドをモックしたいと思います。私が直面している問題は、テスト値を返すことではなく、モックされたメソッドが MagicMock 型のオブジェクトを返すことです。
コードはかなり不自然ですが、問題を示しています。
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):
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'