Мото тестирование не вызывает надлежащего исключения - PullRequest
0 голосов
/ 01 июня 2018

У меня есть следующая функция, которую я хочу проверить:

    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

1 Ответ

0 голосов
/ 04 июня 2018

Внутри except предложение исключение замалчивается и не распространяется, поэтому вам необходимо повторно поднять его:

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

Bare raise повторно вызывает исключение, которое былотолько что поймали.

PS.Бесстыдный штекер: я был одним из тех, кто 20 лет назад просил Гвидо добавить голый raise!: -)

...