首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >测试boto连接

测试boto连接
EN

Code Review用户
提问于 2015-07-14 20:35:41
回答 1查看 10.7K关注 0票数 7

我正在编写一个单元测试,以确保代码可以通过boto连接到aws,因为我将通过代码部署以外的其他流程来设置凭据。到目前为止,我只知道如何通过查看S3桶来检查是否有一个有效的连接,但我希望有人有一种更直接的检查方法。

代码语言:javascript
复制
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
EN

回答 1

Code Review用户

回答已采纳

发布于 2015-07-14 21:22:29

如果您只想测试连接,检查boto.connect_s3()就足够了。根据文档,如果出了问题,就会产生异常。

如果您想要执行更高级的场景,您可以尝试使用桶创建和内部的几个键进行另一个测试。

我将以以下方式构造这些测试:

代码语言:javascript
复制
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_生命周期_配置

只做实验:)

票数 6
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/96950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档