假设我想确保某些标志等被正确分派,以便在我的库深处,一个特定的函数被调用:
high_order_function_call(**kwargs)
内心深处包含library_function_call()
我想确保实际调用它。
为此提供的典型示例使用mock.patch
:
@mock.patch('library')
def test_that_stuff_gets_called(self, mock_library):
high_order_function_call(some_example_keyword='foo')
mock_library.library_function_call.assert_called_with(42)
现在,在这种情况下,我必须等待high_order_function_call
中所有内容的完整执行。如果我希望执行停止并在mock_library.library_function_call
到达后立即跳回单元测试怎么办?
答案 0 :(得分:1)
您可以尝试在调用中使用异常引发的副作用,然后在测试中捕获该异常。
from mock import Mock, patch
import os.path
class CallException(Exception):
pass
m = Mock(side_effect=CallException('Function called!'))
def caller_test():
os.path.curdir()
raise RuntimeError("This should not be called!")
@patch("os.path.curdir", m)
def test_called():
try:
os.path.curdir()
except CallException:
print "Called!"
return
assert "Exception not called!"
if __name__ == "__main__":
test_called()