【发布时间】:2019-06-07 03:20:18
【问题描述】:
如何使用 Python 的 unittest.mock 模块来模拟使用同一类成员的方法?
class NameHelper(object):
def __init__(self):
self.local_id = 0
def next_id(self):
self.local_id += 1
return str(self.local_id)
注意,我是 patch.start and patch.stop,在 setUp 方法中进行修补:
class TestSomeClient(unittest.TestCase):
def setUp(self):
patcher = patch('helpers.name_helper.NameHelper')
self.addCleanup(patcher.stop)
self.mock_name_helper = patcher.start()
# The actual mocked values
self.mock_name_helper.return_value.local_id = 0
self.mock_name_helper.return_value.next_id.return_value = 'mock-name'
显然,mock-name 不是一个明智的模拟返回值。返回值应使用NameHelper 的local_id 成员。
【问题讨论】:
标签: python unit-testing