我正在編寫一個快速類的測試用例,使用boto3從s3中查找/獲取密鑰。我用摩托在過去的測試伯特(不是3)的代碼,但我試圖移動這個項目boto3,並運行到一個問題:我該如何測試使用boto3和moto的方法
class TestS3Actor(unittest.TestCase):
@mock_s3
def setUp(self):
self.bucket_name = 'test_bucket_01'
self.key_name = 'stats_com/fake_fake/test.json'
self.key_contents = 'This is test data.'
s3 = boto3.session.Session().resource('s3')
s3.create_bucket(Bucket=self.bucket_name)
s3.Object(self.bucket_name, self.key_name).put(Body=self.key_contents)
錯誤:
...
File "/Library/Python/2.7/site-packages/botocore/vendored/requests/packages/urllib3/connectionpool.py", line 344, in _make_request
self._raise_timeout(err=e, url=url, timeout_value=conn.timeout)
File "/Library/Python/2.7/site-packages/botocore/vendored/requests/packages/urllib3/connectionpool.py", line 314, in _raise_timeout
if 'timed out' in str(err) or 'did not complete (read)' in str(err): # Python 2.6
TypeError: __str__ returned non-string (type WantWriteError)
botocore.hooks: DEBUG: Event needs-retry.s3.CreateBucket: calling handler <botocore.retryhandler.RetryHandler object at 0x10ce75310>
它看起來像moto沒有正確地模擬出boto3的調用 - 我該如何做這件事?
我沒有看到moto中的代碼使用boto3。 https://github.com/spulec/moto – mootmoot
確實有一些boto3的支持,但也許不在python2.7? https://github.com/spulec/moto/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+boto3顯示很多人都遇到了麻煩。這個問題離我的最近,https://github.com/spulec/moto/issues/474,暗示對HTTPretty的修復將解決它,並且目前正在使用該修補程序的PR,因此希望這可以很快解決-ish。 – user3610360