commit 6a060dfd7ee1af68604e42a1e48a323bfebd010a Author: Steve Pulec Date: Fri Feb 15 22:15:43 2013 -0500 init readme diff --git a/README.md b/README.md new file mode 100644 index 000000000..962983d9f --- /dev/null +++ b/README.md @@ -0,0 +1,58 @@ +# Moto - **Mo**ck Bo**to** + +# 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: + +```python +import boto +from boto.s3.key import Key +conn = boto.connect_s3() + +class MyModel(object): + def __init__(self, name, value): + self.name = name + self.value = value + + def save(self): + 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. + +```python +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. + +# Available Moto services: +* S3 +* EC2 +* DynamoDB + +HTTPretty is a HTTP client mock library for Python 100% inspired on ruby's [FakeWeb](http://fakeweb.rubyforge.org/). +If you come from ruby this would probably sound familiar :smiley: + +#### Install + +```console +pip install moto +```