getResponseメソッドでサービスを提供するClientという名前のクラスがあります。このクラスは他のクラスによって使用されます。Clientクラスを使用するクラスDriverの単体テストを行います。mock.patch を使用して、ClientクラスをMockClientと呼ばれるモック クラスに置き換えます。MockClient は、定義済みの値を返す同じgetResponseメソッドを持ちます。それはうまくいきます。しかし今、 getRsponseメソッドが呼び出されたパラメーターをテストしたいと思います。*assert_has_calls* メソッドを使用して実行したいと考えています。それを行う方法が見つかりませんでした。ご意見をお聞かせください。
テスト中のクラス:
# Driver and its Client
class Driver:
def __init__ (self):
self.client = Client()
def call(self, param):
return self.client.getResponse(param)
class Client:
def getResponse(self, param):
return 'original'
これは、モック クラスを含む Test クラスです。
import unittest
import mock
import driver
from driver import Driver
from driver import Client
class MockClient:
def getResponse(self,param):
return 'mock class'
class TestIt(unittest.TestCase):
def setUp(self):
self.mock_client = mock.patch('driver.Client',create=True, new=MockClient)
self.mock_client.start()
def tearDown(self):
self.mock_client.stop()
def test_call(self):
driver = Driver()
result = driver.call('test')
self.assertEqual(result, 'mock class')