Я хочу проверить поведение своего кода, когда клиент облачной информации вызывает исключение AlreadyExistsException.Но я не могу понять, как поднять его с помощью python mock.
class StackHelper:
def __init__(self, stack_name: str, cfn_client, capabilities: List[str]):
self.stack_name = stack_name
self.cfn_client = cfn_client
self.capabilities = capabilities
def deploy(self, template_url: str, params: object = object()):
try:
self.create_stack(template_url, params)
except self.cfn_client.exceptions.AlreadyExistsException as e:
try:
print('Stack already exists => update_stack')
self.update_stack(template_url, params)
except ClientError as e:
if e.response['Error']['Message'] == 'No updates are to be performed.':
print('Nothing to update.')
else:
raise
Тест - это что-то вроде:
mock_cfn_client = Mock()
mock_cfn_client.return_value.create_stack.side_effect = Mock(side_effect=???)
За это я уже издевался cfn_client
, но сейчас борюсьо том, как вызвать исключение boto3 я ожидаю в коде для except self.cfn_client.exceptions.AlreadyExistsException
.