Go to file
2013-02-23 17:37:55 -05:00
moto volume attaching and detaching working 2013-02-23 17:37:55 -05:00
tests volume attaching and detaching working 2013-02-23 17:37:55 -05:00
.gitignore clean up urls. start to clean up responses 2013-02-18 21:22:03 -05:00
httpretty.py refactor ec2 response structure 2013-02-20 22:21:55 -05:00
Makefile clean up urls. start to clean up responses 2013-02-18 21:22:03 -05:00
README.md comment out rest of readme for now 2013-02-18 16:17:01 -05:00
requirements.txt add freezegun to requirements 2013-02-19 23:02:31 -05:00
setup.py basic ec2 and s3 working 2013-02-18 16:09:40 -05:00

Moto - Mock Boto

WARNING: Moto is still in active development

In a nutshell

Moto is a library that allows your python tests to easily mock out the boto library

Imagine you have the following code that you want to test:

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)

Take a minute to think how you would have tested that in the past.

Now see how you could test it with 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'

With the decorator wrapping the test, all the calls to s3 are automatically mocked out. The mock keeps the state of the buckets and keys.