【发布时间】:2014-03-12 15:53:38
【问题描述】:
我刚刚开始使用 python 模拟框架。我想只计算一个方法被调用的次数,而不消除实际调用该方法的影响。
例如,在这个简单的计数器示例中,我想同时增加计数器并跟踪它被调用的情况:
import unittest
import mock
class Counter(object):
def __init__(self):
self.count = 0
def increment(self):
self.count += 1
class CounterTest(unittest.TestCase):
def test_increment(self):
c = Counter()
c.increment()
self.assertEquals(1, c.count)
def test_call_count(self):
with mock.patch.object(Counter, 'increment') as fake_increment:
c = Counter()
self.assertEquals(0, fake_increment.call_count)
c.increment()
self.assertEquals(1, fake_increment.call_count)
# increment() didn't actually get called.
self.assertEquals(1, c.count) # Fails.
if __name__ == '__main__':
unittest.main()
是否可以强制mock 在注册调用后调用模拟方法,或者只是表示我想保留模拟函数的效果?
【问题讨论】:
标签: python unit-testing mocking