擅长:python、mysql、java
<p>最简单的方法是使用接受iterable、callable或Exception(类或实例)的<a href="https://docs.python.org/3/library/unittest.mock.html#unittest.mock.Mock" rel="noreferrer">^{<cd1>}</a></p>
<blockquote>
<p>Alternatively <code>side_effect</code> can be an exception class or instance. In this case the exception will be raised when the mock is called.</p>
</blockquote>
<p>如<a href="https://docs.python.org/3/library/unittest.mock.html#quick-guide" rel="noreferrer">Quick Guide</a>所示,您可以使用<code>side_effect</code>来引发异常,只需</p>
<blockquote>
<pre><code>>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
...
KeyError: 'foo'
</code></pre>
</blockquote>
<p>此外,您可以在<code>side_effect</code>赋值中同时使用list和Exception。所以最简单的方法就是这样:</p>
<pre><code>>>> m = Mock(side_effect=[1, KeyError("bar"), 3])
>>> m("a")
1
>>> m("b")
...
KeyError: 'bar'
>>> m("c")
3
</code></pre>
<p>另一种方法是使用callable编写mock应该如何反应的逻辑。在这种情况下,您可以自由选择是否基于参数或测试的状态。在</p>