用法:
side_effect
这可以是调用模拟时要调用的函数、可迭代的或要引发的异常(类或实例)。
如果你传入一个函数,它将使用与模拟相同的参数调用,除非函数返回
DEFAULT
单例,否则对模拟的调用将返回函数返回的任何内容。如果函数返回DEFAULT
则模拟将返回其正常值(来自return_value
)。如果您传入一个可迭代对象,则它用于检索一个迭代器,该迭代器必须在每次调用时产生一个值。此值可以是要引发的异常实例,也可以是要从模拟调用返回的值(
DEFAULT
处理与函数案例相同)。引发异常的模拟示例(用于测试 API 的异常处理):
>>> mock = Mock() >>> mock.side_effect = Exception('Boom!') >>> mock() Traceback (most recent call last): ... Exception: Boom!
使用
side_effect
返回一系列值:>>> mock = Mock() >>> mock.side_effect = [3, 2, 1] >>> mock(), mock(), mock() (3, 2, 1)
使用可调用:
>>> mock = Mock(return_value=3) >>> def side_effect(*args, **kwargs): ... return DEFAULT ... >>> mock.side_effect = side_effect >>> mock() 3
side_effect
可以在构造函数中设置。下面是一个示例,它将调用模拟的值加一并返回它:>>> side_effect = lambda value: value + 1 >>> mock = Mock(side_effect=side_effect) >>> mock(3) 4 >>> mock(-8) -7
将
side_effect
设置为None
会清除它:>>> m = Mock(side_effect=KeyError, return_value=3) >>> m() Traceback (most recent call last): ... KeyError >>> m.side_effect = None >>> m() 3
相关用法
- Python unittest.mock.Mock.reset_mock用法及代码示例
- Python unittest.mock.Mock.__class__用法及代码示例
- Python unittest.mock.Mock.call_args用法及代码示例
- Python unittest.mock.Mock.method_calls用法及代码示例
- Python unittest.mock.Mock.call_args_list用法及代码示例
- Python unittest.mock.Mock.assert_called用法及代码示例
- Python unittest.mock.Mock.assert_not_called用法及代码示例
- Python unittest.mock.Mock.mock_calls用法及代码示例
- Python unittest.mock.Mock.assert_has_calls用法及代码示例
- Python unittest.mock.Mock.configure_mock用法及代码示例
- Python unittest.mock.Mock.called用法及代码示例
- Python unittest.mock.Mock.assert_called_once_with用法及代码示例
- Python unittest.mock.Mock.assert_called_once用法及代码示例
- Python unittest.mock.Mock.assert_any_call用法及代码示例
- Python unittest.mock.Mock.call_count用法及代码示例
- Python unittest.mock.Mock.assert_called_with用法及代码示例
- Python unittest.mock.Mock.return_value用法及代码示例
- Python unittest.mock.AsyncMock.assert_awaited_once_with用法及代码示例
- Python unittest.mock.call用法及代码示例
- Python unittest.mock.AsyncMock.assert_any_await用法及代码示例
注:本文由纯净天空筛选整理自python.org大神的英文原创作品 unittest.mock.Mock.side_effect。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。