我有一个名为Client的类,通过它的getResponse方法提供一些服务。这个类被其他类使用。我为使用Client类的类Driver进行单元测试。通过使用 mock.patch,我将Client类替换为名为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'
这是带有模拟类的测试类:
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')