0

モック クラスの 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'
4

1 に答える 1