Skip to main content

A library that allows your python tests to easily mock out the boto library

Project description

Moto - Mock AWS Services

Join the chat at https://gitter.im/awsmoto/Lobby

Build Status Coverage Status Docs PyPI PyPI - Python Version PyPI - Downloads Code style: black

Install

$ pip install moto[ec2,s3,all]

In a nutshell

Moto is a library that allows your tests to easily mock out AWS Services.

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

import boto3

class MyModel(object):
    def __init__(self, name, value):
        self.name = name
        self.value = value

    def save(self):
        s3 = boto3.client('s3', region_name='us-east-1')
        s3.put_object(Bucket='mybucket', Key=self.name, Body=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 boto3
from moto import mock_s3
from mymodule import MyModel

@mock_s3
def test_my_model_save():
    conn = boto3.resource('s3', region_name='us-east-1')
    # We need to create the bucket since this is all in Moto's 'virtual' AWS account
    conn.create_bucket(Bucket='mybucket')
    model_instance = MyModel('steve', 'is awesome')
    model_instance.save()
    body = conn.Object('mybucket', 'steve').get()['Body'].read().decode("utf-8")
    assert body == '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.

For a full list of which services and features are covered, please see our implementation coverage.

Documentation

The full documentation can be found here:

http://docs.getmoto.org/en/latest/

Project details


Release history Release notifications | RSS feed

This version

3.1.8

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

moto-3.1.8.tar.gz (2.3 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

moto-3.1.8-py3-none-any.whl (1.8 MB view details)

Uploaded Python 3

File details

Details for the file moto-3.1.8.tar.gz.

File metadata

  • Download URL: moto-3.1.8.tar.gz
  • Upload date:
  • Size: 2.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.9.12

File hashes

Hashes for moto-3.1.8.tar.gz
Algorithm Hash digest
SHA256 bde95005ec42a88448a98809397030f9e886387f469dcd2fcbc7f38d75858872
MD5 cc8f51f02634766c71995ef4fc8ad79e
BLAKE2b-256 ce2c1e4bd95a305511e5645c44eca29664b01f537b71ad1f6e050d07479fbccb

See more details on using hashes here.

File details

Details for the file moto-3.1.8-py3-none-any.whl.

File metadata

  • Download URL: moto-3.1.8-py3-none-any.whl
  • Upload date:
  • Size: 1.8 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.9.12

File hashes

Hashes for moto-3.1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 19dd772ab1092ef8b74a4dd801dbdf1cf6f3b181c1dff5f2343884162e33bf6f
MD5 41f0dc4a4e570a0cc9b394e50cbd9ee6
BLAKE2b-256 401b5651c80ccbe3738a67eed679f3dc1beae23805fd1bb70088e572146025a0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page