2024-04-19 11:15:01 发布
网友
我正在用python为一个函数编写一个单元测试,该函数将S3 bucket中的一个对象作为输入参数
输入参数的类型为boto3.resources.factory.s3.ObjectSummary
boto3.resources.factory.s3.ObjectSummary
我不希望我的单元测试访问S3
我正在编写一个将.csv文件读入类型为的对象的测试
pandas.core.frame.DataFrame.
有人知道我如何从中创建boto3.resources.factory.s3.ObjectSummary类型的对象吗
谢谢你的回复
您可以使用^{}
# builtins from unittest.mock import patch # 3rd party import pandas as pd with patch("boto3.resources.factory.s3.ObjectSummary") as patched_obj: patched_obj.return_value = pd.DataFrame() # run test in this scope
谢谢乔丹。我能像这样解决我的问题
import unittest from io import StringIO import boto3 import pandas as pd from moto import mock_s3 class GetBindingsTester(unittest.TestCase): @mock_s3 # mocks all calls to S3 def testGetBindings(self): s3_resource = boto3.resource('s3') s3_resource.create_bucket(Bucket="mock_bucket", CreateBucketConfiguration={ 'LocationConstraint': 'us-west-1'}) dts_mapping_file = pd.read_csv(r'dtsMapping.csv') csv_buffer = StringIO() dts_mapping_file.to_csv(csv_buffer) s3_resource.Object("mock_bucket", 'dtsMapping.csv').put(Body=csv_buffer.getvalue()) obj = s3_resource.Object("mock_bucket", "dtsMapping.csv")
您可以使用^{}
谢谢乔丹。我能像这样解决我的问题
相关问题 更多 >
编程相关推荐