擅长:python、mysql、java
<p>要添加到Kit的答案中,为<code>patch.object()</code>指定第三个参数允许指定模拟对象/方法。否则,将使用默认的<code>MagicMock</code>对象。</p>
<pre><code> def fake_bar(self):
print "Do something I want!"
return True
@patch.object(my_app.models.FooClass, 'bar', fake_bar)
def test_enter_promotion(self):
self.client.get(reverse(view))
# Do something I want!
</code></pre>
<p>注意,如果指定模拟对象,则默认的<code>MagicMock()</code>是<strong>不再</strong>传递到修补对象中--例如不再:</p>
<pre><code>def test_enter_promotion(self, mock_method):
</code></pre>
<p>但事实上:</p>
<pre><code>def test_enter_promotion(self):
</code></pre>
<p><a href="http://www.voidspace.org.uk/python/mock/patch.html#patch-object" rel="noreferrer">http://www.voidspace.org.uk/python/mock/patch.html#patch-object</a></p>