Go to file
2024-03-29 19:29:50 +00:00
.devcontainer Add a Devcontainer (#6290) 2023-07-03 22:36:55 +00:00
.github Bump ruby/setup-ruby from 1.172.0 to 1.173.0 (#7522) 2024-03-26 19:37:13 -01:00
docs Prep release 5.0.4 (#7525) 2024-03-27 06:35:37 -01:00
moto Show header values 2024-03-29 19:29:50 +00:00
other_langs Bump software.amazon.awssdk:bom in /other_langs/tests_java (#7414) 2024-03-01 22:03:12 -01:00
scripts Admin: Using ruff format instead of black (#7502) 2024-03-21 19:17:29 -01:00
tests Prep release 5.0.4 (#7525) 2024-03-27 06:35:37 -01:00
.coveragerc MyPy improvements (#7045) 2023-11-21 22:51:03 -01:00
.git-blame-ignore-revs Ruff formatting (#7508) 2024-03-21 20:21:52 -01:00
.gitignore Lambda: Support Kinesis as EventSourceMapping target (#7275) 2024-01-30 19:51:15 -01:00
.gitmodules Techdebt: Remove Terraform tests (#7195) 2024-01-27 19:38:09 +00:00
.readthedocs.yaml Update .readthedocs.yaml 2021-11-03 21:01:49 -01:00
AUTHORS.md IOT: check if policy name already taken (#5352) 2022-08-02 19:45:46 +02:00
CHANGELOG.md Post-release steps 2024-03-27 08:14:22 +00:00
CLOUDFORMATION_COVERAGE.md Prep Release 4.1.7 (#6201) 2023-04-11 14:31:46 +00:00
CODE_OF_CONDUCT.md Add docs on contributing and code of conduct. 2017-02-26 19:55:19 -05:00
codecov.yml StepFunctions: Proper Parser (#7418) 2024-03-16 13:03:41 -01:00
CONFIG_README.md address PR comments 2020-09-21 17:42:44 -06:00
CONTRIBUTING.md Admin: Using ruff format instead of black (#7502) 2024-03-21 19:17:29 -01:00
Dockerfile Docker image is now based on Python 3.11 (#6714) 2023-08-23 07:28:42 +00:00
IMPLEMENTATION_COVERAGE.md Prep release 5.0.4 (#7525) 2024-03-27 06:35:37 -01:00
ISSUE_TEMPLATE.md Add docs on contributing and code of conduct. 2017-02-26 19:55:19 -05:00
LICENSE Add license. 2013-04-26 17:13:43 -04:00
Makefile Adim: Add format check by ruff in Github Actions (#7510) 2024-03-22 20:04:01 -01:00
MANIFEST.in Prep release 4.2.10 (#7064) 2023-11-24 19:17:50 -01:00
pyproject.toml Techdebt: Improve linting (#7332) 2024-02-11 13:47:34 -01:00
README.md Admin: Using ruff format instead of black (#7502) 2024-03-21 19:17:29 -01:00
requirements-dev.txt Admin: Using ruff format instead of black (#7502) 2024-03-21 19:17:29 -01:00
requirements-tests.txt Admin: Using ruff format instead of black (#7502) 2024-03-21 19:17:29 -01:00
requirements.txt Update requirements.txt to reference new location of requirements (#7351) 2024-02-18 20:08:26 -01:00
setup.cfg S3: select_object_content() now supports Compressed requests and CSV outputs (#7514) 2024-03-25 05:34:06 -01:00
update_version_from_git.py Move to pyproject.toml, instead of setup.py (#5821) 2023-01-06 18:43:16 -01:00

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: Ruff Financial Contributors

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:
    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_aws
from mymodule import MyModel


@mock_aws
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 track of 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/

Financial Contributions

Support this project and its continued development, by sponsoring us!

Click the Sponsor-button at the top of the page for more information.

Our finances are managed by OpenCollective, which means you have full visibility into all our contributions and expenses: https://opencollective.com/moto

Security contact information

To report a security vulnerability, please use the Tidelift security contact. Tidelift will coordinate the fix and disclosure.