Установка
$ 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")
# Нам нужно создать корзину, так как всё это находится в «виртуальной» учётной записи AWS от Moto
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 автоматически имитируются. Имитация отслеживает состояние корзин и ключей. Полный список сервисов и функций, которые поддерживаются, см. в нашем документе IMPLEMENTATION_COVERAGE.
Полную документацию можно найти здесь: http://docs.getmoto.org/en/latest/
Поддержите этот проект и его дальнейшее развитие, спонсируя нас! Нажмите кнопку «Sponsor» вверху страницы для получения дополнительной информации. Наши финансы управляются OpenCollective, что означает, что вы полностью видите все наши взносы и расходы: https://opencollective.com/moto
Чтобы сообщить об уязвимости системы безопасности, пожалуйста, используйте контакт безопасности Tidelift. Tidelift будет координировать исправление и раскрытие информации.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )