我似乎记得读过有关 Amazon S3 兼容测试服务器的文章,您可以在自己的服务器上运行它以进行单元测试或其他任何事情。然而,我已经用尽了我的耐心在谷歌和 AWS 上寻找这个。这样的事情存在吗?如果没有,我想我会写一个。
注意:我问的是 Amazon S3(存储系统)而不是 Amazon EC2(云计算)。
我似乎记得读过有关 Amazon S3 兼容测试服务器的文章,您可以在自己的服务器上运行它以进行单元测试或其他任何事情。然而,我已经用尽了我的耐心在谷歌和 AWS 上寻找这个。这样的事情存在吗?如果没有,我想我会写一个。
注意:我问的是 Amazon S3(存储系统)而不是 Amazon EC2(云计算)。
我认为 moto ( https://github.com/spulec/moto ) 是您单元测试的完美工具。Moto 模拟对 S3、SQS 等的所有访问,并且可以使用其 Web 服务器以任何编程语言使用。
设置简单,轻巧且快速。
来自 moto 的自述文件:
假设您有以下要测试的代码:
import boto
from boto.s3.key import Key
class MyModel(object):
def __init__(self, name, value):
self.name = name
self.value = value
def save(self):
conn = boto.connect_s3()
bucket = conn.get_bucket('mybucket')
k = Key(bucket)
k.key = self.name
k.set_contents_from_string(self.value)
花点时间想想你过去会如何测试它。现在看看如何用 Moto 测试它:
import boto
from moto import mock_s3
from mymodule import MyModel
@mock_s3
def test_my_model_save():
model_instance = MyModel('steve', 'is awesome')
model_instance.save()
conn = boto.connect_s3()
assert conn.get_bucket('mybucket').get_key('steve') == 'is awesome'
Park Place 已移至 github:http: //github.com/technoweenie/parkplace
桉树 http://eucalyptus.cs.ucsb.edu/
EUCALYPTUS - 用于将您的程序链接到有用系统的弹性实用计算架构 - 是一种用于在集群上实现“云计算”的开源软件基础架构。EUCALYPTUS 的当前接口与 Amazon 的 EC2 接口兼容,但基础设施旨在支持多个客户端接口。
请注意,根据文档,Eucalypus 不仅重新实现了 EC2 接口,还重新实现了 S3 存储系统。该存储组件称为海象。( http://open.eucalyptus.com/wiki/EucalyptusUserGuide_v1.5.2 )
Fake S3似乎是 S3 的最新重新实现,专门设计用于测试。
Amazon 使用 Xen,因此您可以在自己的 Xen 安装中运行您的 AMI。不过,我只是启动一个实例并在那里运行测试。它不会花费太多,您通常应该可以在本地开发并且不经常在他们的系统上对其进行测试。