我正在尝试测试与 Amazon Forecast 服务交互的代码块,它看起来与https://github.com/aws-samples/amazon-forecast-samples/blob/master/ml_ops/中提供的示例非常相似可视化博客/lambdas/createdataset/dataset.py。
更具体地说,我正在尝试测试我是否正确处理了异常。假设“预测”是 Amazon Forecast boto3 客户端,代码结构如下:
def example_function(dataset):
try:
forecast.describe_dataset(dataset)
#do some stuff
except forecast.exceptions.ResourceNotFoundException:
#do other stuff
我有一个看起来像这样的测试用例:
from moto.forecast.exceptions import ResourceNotFoundException
@patch('forecast client')
def test(self, mock_forecast):
mock_forecast.describe_dataset.side_effect = ResourceNotFoundException
example_function(dataset)
这会产生“TypeError:不允许捕获不从 BaseException 继承的类”,这让我感到困惑,因为 moto.forecast.exceptions.ResourceNotFoundException 继承了 moto 类“AWSError”,而后者又继承了“Exception”。
如果我无法将 side_effect 设置为异常,我对如何在不实际与预测服务交互的情况下测试代码的“例外”块感到相当茫然。任何想法将不胜感激!