【发布时间】:2020-10-06 05:41:30
【问题描述】:
我正在尝试模拟对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 没有处理异常。
【问题讨论】:
-
或许使用moto可以帮到你
标签: python mocking boto3 amazon-cognito