moto mock_ses的list_identities(IdentityType)返回结果不符合预期
问题分析与解决方案
这是moto 4.2.6版本的SES mock实现缺陷——该版本的list_identities()方法没有实现IdentityType参数的筛选逻辑,无论传入EmailAddress还是Domain,都会返回所有已添加的身份,和AWS SES的实际行为不符。
解决办法有两个:
升级moto到新版本
moto后续的稳定版本(比如5.x系列)已经修复了这个问题,升级后mock的list_identities()会正确识别IdentityType参数并过滤结果。执行升级命令:pip install --upgrade moto测试中手动过滤结果(临时方案)
如果暂时无法升级,可以在调用mock的list_identities()后,自己根据需求过滤返回的身份列表,比如只保留邮箱:from moto import mock_ses import boto3 @mock_ses def test_filter_email_identities(): ses_client = boto3.client('ses', region_name='us-east-1') # 添加测试用的邮箱和域名身份 ses_client.verify_email_identity(EmailAddress='user@test.com') ses_client.verify_domain_identity(Domain='test.com') # 调用mock方法 raw_response = ses_client.list_identities(IdentityType='EmailAddress') # 手动过滤邮箱身份 email_identities = [id for id in raw_response['Identities'] if '@' in id] # 断言验证 assert len(email_identities) == 1 assert 'user@test.com' in email_identities
内容的提问来源于stack exchange,提问作者Kai-Eiji
相关产品推荐
相关产品推荐

