python - pytest中的monkeypatching boto3 s3调用
问题描述
我想使用 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))
解决方案
以下测试用例适用于问题中发布的场景
@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
推荐阅读
- sitefinity - 如何保持短文本中的值“&”不变?
- python - 过多的内存使用 xarray `to_dataframe()`
- wordpress - Wordpress:安装失败:无法创建目录。'all-in-one-wp-migration' [即使使用 CHMOD 777]
- asp.net-core - 更新后重复行
- python - 我实现的合并排序不起作用
- android - 如何使用 Google 上的操作(Android 助手)创建 Android Intent?
- r - 如何使用 R 在语料库中搜索特定的 n-gram
- java - Java 客户端 - 服务器 - 具有同步线程的客户端
- angular - Angular ngrx add/del 返回未定义
- r - terms.formula 中的错误(公式,数据 = 数据)