擅长:python、mysql、java
<p>我知道这个问题很古老,但我也遇到过同样的问题,找到了这个问题。而且,两年前提交的<a href="http://code.google.com/p/mock/issues/detail?id=219">bug report</a>似乎没有引起任何注意,所以我想我会分享我发现的解决方案,以防其他人会有这个问题。在</p>
<p>因此,如上所述,<code>PropertyMock</code>不能与设置为<code>side_effect</code>的{<cd2>}一起工作。解决方法是创建一个简单的<code>Mock</code>,并将<code>spec</code>属性设置为空<code>list</code>,如下所示:</p>
<pre><code>>>> from mock import Mock
>>> m = Mock(spec=[])
>>> m.p
Traceback (most recent call last)
[...]
AttributeError
</code></pre>
<p>如<a href="http://www.voidspace.org.uk/python/mock/mock.html#mock.Mock">docs</a>中所述:</p>
<blockquote>
<p>spec: This can be either a list of strings or an existing object (a class or instance) that acts as the specification for the mock object. If you pass in an object then a list of strings is formed by calling dir on the object (excluding unsupported magic attributes and methods). <strong>Accessing any attribute not in this list will raise an AttributeError.</strong></p>
</blockquote>