【问题标题】:Moto testing not raising proper exceptionMoto 测试没有引发适当的异常
【发布时间】:2018-06-01 20:00:30
【问题描述】:

我想测试以下功能:

    def download(self):
        s3 = boto3.client('s3')
        try:
            with open(self.flow_cells +'.tar', 'wb') as data:
                s3.download_fileobj(
                    self.source_s3_bucket,
                    self.source_key,
                    data
                )
            return True
        except botocore.exceptions.ClientError as error:
            print(error.response['Error']['Code'])

我正在使用 pytest 来测试带有 moto 的代码。除此之外,所有其他测试和 botocore 异常都被标记。我在标准输出中捕获它正在获取异常函数并打印正确的代码,但 moto 没有将其标记为异常

这是我的测试代码。

def test_download(parse_args, file_test):
 with moto.mock_s3():
    s3 = boto3.resource('s3')
    s3.create_bucket(Bucket=parse_args.glacier_s3_bucket, CreateBucketConfiguration={
        'LocationConstraint': 'us-east-1'
        })
    s3.create_bucket(Bucket=parse_args.output_s3_bucket, CreateBucketConfiguration={
        'LocationConstraint': 'us-east-1'
        })
    bucket_version = s3.BucketVersioning(parse_args.glacier_s3_bucket)
    bucket_version.enable()
    s3.Object(parse_args.glacier_s3_bucket, 'flowcells/flowcell-testing.tar').put\
    (Body=open(file_test, 'rb'))
    glacier_client = GlacierRestoreClient(parse_args)
    assert glacier_client.download() is True
    s3.Object(glacier_client.source_s3_bucket, glacier_client.source_key).delete()
    with pytest.raises(Exception) as error:
        glacier_client.download()
    assert 'Error' in error

【问题讨论】:

  • download 不会引发任何异常。你想重新加注你抓到的botocore.exceptions.ClientError 吗?
  • 是的,我想提出被捕获的异常。

标签: pytest boto3 botocore moto


【解决方案1】:

except 子句中,异常被沉默而不传播,所以你需要重新提出它:

    except botocore.exceptions.ClientError as error:
        print(error.response['Error']['Code'])
        raise

刚刚捕获的裸raise re-raises 异常。

PS。无耻插件:我是20年前让Guido添加裸raise的人之一! :-)

【讨论】:

    猜你喜欢
    • 2017-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-24
    • 2018-04-19
    • 2019-11-11
    • 2012-04-05
    • 2011-03-29
    相关资源
    最近更新 更多