我使用装饰器来处理 Python 中的异常。这是装饰器功能:
def docker_exception_handler(func):
def wrapper(*args, **kwargs):
logger = logging.getLogger('docker_exception')
try:
func(*args, **kwargs)
except SubProcessException:
logger.critical(
f'Failed to pull {args[1]} in function {func.__name__}\n')
return wrapper
现在我想在调用 SubProcessException 引发此函数时使用 Pytest。就像是:
@docker_exception_handler
def trigger_docker_error(class_name, docker_image):
raise PullDockerImageError
def test_docker_error():
with patch.object(customized_exceptions,
'docker_exception_handler') as mock:
trigger_docker_error("test", "test_docker_image")
mock.assert_called_once()
但是模拟没有接到电话,失败的消息
AssertionError: Expected 'docker_exception_handler' to have been called once. Called 0 times
我不知道为什么。