我正在编写一个单元测试,以确保代码可以通过boto连接到aws,因为我将通过代码部署以外的其他流程来设置凭据。到目前为止,我只知道如何通过查看S3桶来检查是否有一个有效的连接,但我希望有人有一种更直接的检查方法。
import unittest
import boto
class TestTest(unittest.TestCase):
def setUp(self):
self.s3 = boto.connect_s3()
def tearDown(self):
pass
def test_connection(self):
assert self.s3 is not None
# must be a better way to ensure connection works
bucket = boto.s3.bucket.Bucket(connection=self.s3, name='test_this_bucket')
all_keys = bucket.get_all_keys()
assert len(all_keys) == 0发布于 2015-07-14 21:22:29
如果您只想测试连接,检查boto.connect_s3()就足够了。根据文档,如果出了问题,就会产生异常。
如果您想要执行更高级的场景,您可以尝试使用桶创建和内部的几个键进行另一个测试。
我将以以下方式构造这些测试:
import unittest
from time import time, sleep
import boto
class BasicConnectionTest(unittest.TestCase):
def test_connection_works(self):
# Please add some credentials if necessary
connection = boto.connect_s3()
# when using unittest, I'm trying to stick to helper methods
# because they are more verbose
self.assertIsNotNone(connection)
class AdvancedConnectionTest(unittest.TestCase):
def setUp(self):
self.connection = boto.connect_s3()
def test_bucket_can_be_created(self):
bucket = self.create_bucket()
self.assertIsNotNone(bucket)
self.assertEqual(len(bucket.get_all_keys()), 0)
def test_keys_can_be_created(self):
bucket = self.create_bucket()
key = self.create_key(bucket, "mykey")
key.set_contents_from_string("Hello World!")
sleep(2)
contents = key.get_contents_as_string()
self.assertEqual(contents, "Hello World!")
def create_bucket(self):
bucket = self.connection.create_bucket('boto-demo-%s' % int(time()))
self.addCleanup(bucket.delete)
return bucket
def create_key(self, bucket, name):
key = bucket.new_key('mykey')
self.addCleanup(key.delete)
return key在这种情况下,如果测试中有问题,addCleanup将负责删除桶和密钥,这是安全的。
还可以测试一些信任,例如http://boto.readthedocs.org/en/latest/ref/s3.html#boto.s3.bucket.Bucket.get_生命周期_配置
只做实验:)
https://codereview.stackexchange.com/questions/96950
复制相似问题