擅长:python、mysql、java
<p>@Gin的答案在很大程度上帮助了我,但在我的例子中,我正在修补<code>MyModel.objects</code>,而我正在嘲笑的查询如下所示:</p>
<p><code>MyModel.objects.filter(arg1=user, arg2=something_else).order_by('-something').first()</code></p>
<p>所以这对我有效:</p>
<pre><code>@patch('MyModel.objects')
def test_a_function(mock, a_fixture):
mock.filter.return_value.order_by.return_value.first.return_value = a_fixture
result = the_func_im_testing(arg1, arg2)
assert result == 'value'
</code></pre>
<p>此外,修补属性的顺序很重要,并且必须与您在测试函数中调用它们的顺序匹配。</p>