Операция BotoCore / Boto3 Stubber не найдена для generate_presigned_post - PullRequest
0 голосов
/ 21 июня 2019

Я пытаюсь использовать botocore.stub.Stubber, чтобы высмеивать мой boto3.client, и я получаю botocore.model.OperationNotFoundError, когда пытаюсь добавить смоделированный generate_presigned_post ответ:

class S3FileTestCase(TestCase):

    @classmethod
    def setUpTestData(cls):
        cls.s3 = botocore.session.get_session().create_client('s3')
        cls.region_name = 'eu-west-2'

    @staticmethod
    def _mock__get_s3(region_name):
        client = boto3.client('s3', config=boto3.session.Config(signature_version='s3v4'), region_name=region_name)
        stubber = Stubber(client)

        stubber.add_response('generate_presigned_post', {'test':1}, {'bucket_name': 'test_bucket', 'region_name': region_name, 'object_name': 'test.csv'})
        return stubber

    @patch('uploader.models.s3_file.S3File._get_s3', new=_mock__get_s3)
    def test_create_presigned_post(self):
        response = S3File.create_presigned_post('stuart-special-testing-bucket', self.region_name, 'test.csv')
        print(response)

Когда язапустить test_create_presigned_post Я получу OperationNotFoundError в add_reponse.Кто-нибудь знает, почему это может быть?

Примечание: S3File.create_presigned_post берется непосредственно из документов , единственное изменение заключается в том, что клиент перемещается в функцию, поэтому его можно смоделировать (и добавить параметр региона).

...