moto - AWSインフラストラクチャに基づいてテストを簡単にモックアウトできるライブラリ。

(A library that allows you to easily mock out tests based on AWS infrastructure.)

Created at: 2013-02-19 05:10:59
Language: Python
License: Apache-2.0

モト - AWS サービスのモック

https://gitter.im/awsmoto/Lobby でチャットに参加する

ビルドステータス カバレッジステータス ドキュメント パイパイ PyPI - Python バージョン PyPI - ダウンロード コードスタイル:黒

取り付ける

$ pip install 'moto[ec2,s3,all]'

一言で言えば

Motoは、テストでAWSサービスを簡単にモックアウトできるようにするライブラリです。

テストする次の Python コードがあるとします。

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)

少し時間を取って、過去にそれをどのようにテストしたかを考えてみてください。

次に、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'

デコレータがテストをラップすると、s3へのすべての呼び出しが自動的にモックアウトされます。モックはバケットとキーの状態を保持します。

対象となるサービスと機能の完全なリストについては、実装範囲を参照してください。

ドキュメンテーション

完全なドキュメントはここにあります:

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