$ pip install ' moto[ec2,s3,all] '
Moto — это библиотека, которая позволяет вашим тестам легко имитировать сервисы AWS.
Представьте, что у вас есть следующий код Python, который вы хотите протестировать:
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 )
Подумайте минутку, как бы вы проверили это в прошлом.
Теперь посмотрим, как можно протестировать это с помощью 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"
Когда декоратор завершает тест, все вызовы s3 автоматически макетируются. Мок отслеживает состояние ведер и ключей.
Полный список покрываемых услуг и функций см. в разделе о реализации.
Полную документацию можно найти здесь:
http://docs.getmoto.org/en/latest/
Поддержите этот проект и его дальнейшее развитие, спонсируя нас!
Нажмите кнопку Sponsor
вверху страницы, чтобы получить дополнительную информацию.
Нашими финансами управляет OpenCollective, что означает, что вы имеете полную информацию обо всех наших вкладах и расходах: https://opencollective.com/moto
Чтобы сообщить об уязвимости безопасности, воспользуйтесь контактом службы безопасности Tidelift. Tidelift будет координировать исправление и раскрытие информации.