1

我正在尝试测试与 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 设置为异常,我对如何在不实际与预测服务交互的情况下测试代码的“例外”块感到相当茫然。任何想法将不胜感激!

4

0 回答 0