我试图模拟对boto3.client("cognito-idp")
中函数的调用。
我已经能够成功地模拟正常的代码流,但是异常被证明更加棘手。我有点像:
@patch("boto3.client")
def test_failure_cannot_create_duplicate_user_in_cognito(self, mock_client):
client = boto3.client("cognito-idp")
boto3_mock = MagicMock()
boto3_mock.admin_create_user.side_effect = client.exceptions.UsernameExistsException()
mock_client.return_value = boto3_mock
response = handler(event, None)
body = json.loads(response["body"])
self.assertEqual(HTTPStatus.CONFLICT, response["statusCode"])
然后在处理程序中:
client = boto3.client("cognito-idp")
try:
create_user_response = client.admin_create_user(
UserPoolId=user_pool,
Username=user_name,
UserAttributes=[
{
"Name": user_attribute,
"Value": user_name
},
{
"Name": verify,
"Value": "True"
},
],
TemporaryPassword=temp_pass,
DesiredDeliveryMediums=[delivery],
)
cognito_user_name = create_user_response["User"]["Username"]
except client.exceptions.UsernameExistsException:
return conflict(Errors.DUPLICATE_USER)
except
没有处理异常
^{} 除此之外,通过一些努力,可以使用this approach by mixja从模拟的boto3函数中引发特定的boto3异常
在继续之前,请注意stubber不是一个好选项,因为它通常需要
~/.aws/
配置文件才能存在,而且它们通常不存在于CI(持续集成)环境中下面是一个使用上述方法的
boto3.client('glue')
示例。它可以适用于其他AWS服务和例外情况功能:
测试:
相关问题 更多 >
编程相关推荐