如何手动测试Python中Azure Cosmos SDK异常及代码故障场景
手动触发Cosmos DB创建用户代码中的各类异常方法
针对你提供的Python代码,以下是强制触发不同故障场景异常的具体操作:
1. 触发AzureMissingResourceHttpError
这个异常通常在目标容器/数据库不存在时抛出,操作方式:
- 修改代码中
container的指向,改成一个未在Cosmos DB中创建的容器名称,或者故意写错数据库名称 - 调用
resolve_createUser函数,此时create_item会因找不到资源抛出该异常
2. 触发主键重复异常(CosmosResourceExistsError)
Cosmos DB中id+分区键组合是唯一约束,操作方式:
- 用同一组
userDisplayName和userPhoneNumber参数重复调用resolve_createUser函数 - 第二次调用时,会抛出资源已存在的异常(注:你的代码目前未捕获该异常,可考虑补充处理逻辑)
3. 触发网络连接故障异常
模拟无法连接Cosmos DB服务的场景:
- 直接断开测试机器的网络
- 或者修改Cosmos DB的连接字符串,故意写错账户名称、密钥或端点地址
- 调用函数时会抛出连接超时或无法访问服务的相关异常
4. 触发权限不足异常
模拟无写入权限的场景:
- 将连接字符串中的密钥替换为仅拥有读取权限的密钥(在Azure门户的Cosmos DB账户密钥页生成只读密钥)
- 或者在Cosmos DB权限设置中,给当前访问主体移除容器的写入权限
- 调用
create_item时会返回403状态码的权限不足异常
5. 触发限流(429)异常
模拟RU配额耗尽的场景:
- 短时间内高频次调用
resolve_createUser函数(比如用循环批量调用) - 当请求量超过容器配置的RU上限时,会触发429限流异常(若SDK开启自动重试,可先关闭重试配置以直接捕获异常)
内容的提问来源于stack exchange,提问作者Sumchans
相关产品推荐
相关产品推荐

