【问题标题】:monkeypatching boto3 s3 call in pytestpytest中的monkeypatching boto3 s3调用
【发布时间】:2019-04-10 00:56:57
【问题描述】:

我想使用 pytest 测试 save_doc 函数并模拟下面的调用

    boto3.resource('s3').Object(bucket_name, key).put(Body=json.dumps(body))

我试图弄清楚如何使用“补丁”装饰器来模拟这个调用。有没有可以看的例子/指针?

def save_doc(doc_id, body):

    bucket_name = os.environ['bucket_name']
    key = '{}{}.json'.format(os.environ['key'], doc_id)

    boto3.resource('s3').Object(bucket_name, key).put(Body=json.dumps(body))

【问题讨论】:

标签: python python-3.x amazon-web-services pytest monkeypatching


【解决方案1】:

以下测试用例适用于问题中发布的场景

@mock_s3
def test_save_doc(doc_id, body):
    bucket_name = os.environ['bucket_name']
    key = os.environ['key']
    conn = boto3.resource('s3', region_name='us-east-1')
    conn.create_bucket(Bucket=bucket_name)
    save_doc(doc_id, body)
    response = conn.Object(bucket_name, key).get()['Body'].read().decode("utf-8")
    assert body == response

【讨论】:

    猜你喜欢
    • 2019-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-28
    • 1970-01-01
    • 1970-01-01
    • 2022-11-11
    • 2015-02-22
    相关资源
    最近更新 更多