создайте ботокорский стаббер с помощью endpoints_url - PullRequest
0 голосов
/ 30 января 2020

Я пытаюсь создать заглушку с endpoint_url для моего клиента boto3. Вот мой код.

subject_under_test.py

import boto3

def head_obj():
    s3 = boto3.client(service_name="s3", endpoint_url=<endpoint_url>)
    try:
        s3.head_object(Bucket=bucket, Key=key)
        return True
    except ClientError as e:
        return False

test_subject.py

from botocore.stub import Stubber
import boto3
from subject_under_test import head_obj

class TestSubject(unittest.TestCase):
    def setUp(self):
        s3 = boto3.client('s3', endpoint_url=<endpoint_url>)
        stubber = Stubber(s3)
        stubber.add_response(
                        'head_object',
                        expected_params = {'Bucket': 'bucket1', 'Key':'key1'},
                        service_response={},
                    )
        stubber.add_client_error(
                        'head_object',
                        expected_params = {'Bucket': 'bucket1', 'Key':'key2'},
                        service_error_code='404',
                    )

    def test_head_obj(self):
        self.assertTrue(head_obj("bucket1","key1"))
        self.assertFalse(head_obj("bucket1","key2"))
if __name__ == '__main__':
    unittest.main()

boto3 пытается подключиться и дать мне ошибку в create_connection. Как можно избежать создания соединения?

...