Как издеваться над конкретными исключениями boto3? - PullRequest
0 голосов
/ 20 января 2019

Я хочу проверить поведение своего кода, когда клиент облачной информации вызывает исключение 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.

...