У меня есть код, который загружает файл из корзины S3, используя boto3 .
# foo.py
def dl(src_f, dest_f):
s3 = boto3.resource('s3')
s3.Bucket('mybucket').download_file(src_f, dest_f)
Теперь я хотел бы написать модульный тест для dl()
с использованием pytestи издеваясь над взаимодействием с AWS, используя заглушку, доступную в botocore .
@pytest.fixture
def s3_client():
yield boto3.client("s3")
from foo import dl
def test_dl(s3_client):
with Stubber(s3_client) as stubber:
params = {"Bucket": ANY, "Key": ANY}
response = {"Body": "lorem"}
stubber.add_response(SOME_OBJ, response, params)
dl('bucket_file.txt', 'tmp/bucket_file.txt')
assert os.path.isfile('tmp/bucket_file.txt')
Я не уверен в правильном подходе для этого. Как мне добавить bucket_file.txt
к ответу на заглушку? Какой объект мне нужно add_response()
до (показано как SOME_OBJ
)?