我编写了一些代码,这些代码使用在处理Cloudwatch日志时引发的特定客户端异常。不仅仅是捕获通用的ClientError
异常,我还捕获了潜在的异常,因此我可以以不同的方式处理它们。
例如:
res = None
while res is None:
try:
res = self.logs_client.describe_log_streams(logGroupName=self.log_group)
except self.logs_client.exceptions.ThrottlingException:
time.sleep(1 + random.random())
因此,如果在通话过程中发生ThrottlingException
,则会处理并重试异常(可能不是最好的方法,但它“有效”:))
我在其他地方也有类似的异常处理,可以捕获客户机上引发的其他异常。现在,我想模拟这些在单元测试中引发的异常。我尝试过基于Exception
创建一个伪类,并通过describe_log_streams
的模拟来提出它,但是无论如何我总是得到:
TypeError: catching classes that do not inherit from BaseException is not allowed
我尝试过:
def thrower():
raise MockCloudWatchClass.exceptions.ThrottlingException()
mock_client.describe_log_streams.side_effect = thrower
,其类定义为:
class MockCloudWatchClass:
class exceptions(Exception):
class ThrottlingException(Exception):
def __init__(self):
super().__init__()
非常感谢您的帮助