Pfu*_*Guy 7 python multithreading python-unittest
使用Python 2.6.6
所以我刚刚了解到以下内容:
myLock.acquire()
doStuff()
myLock.release()
Run Code Online (Sandbox Code Playgroud)
可以替换为:
with myLock:
doStuff()
Run Code Online (Sandbox Code Playgroud)
我的问题是,使用前面的代码,我可以通过模拟Lock来单元测试锁被用来保护做事.但是对于后者,我的单元测试现在(预期)失败,因为没有调用acquire()和release().因此,对于后一种情况,我如何验证锁是否用于保护做事?
我更喜欢第二种方法,因为它不仅更简洁,而且我不可能编写忘记解锁资源的代码.(不是说我以前做过那个......)
该with
语句在内部(分别)开始和结束时调用__enter__
和__exit__
魔术方法.您可以通过使用MagicMock
或通过显式设置来模拟这些方法mock.__enter__ = Mock();mock.__exit__ = Mock()
.
以这种方式设置魔法只适用于模拟; 要覆盖非模拟对象上的魔术方法,您必须在类型上设置它.
归档时间: |
|
查看次数: |
821 次 |
最近记录: |