Это работает на меня. Возможно, выполняя более поздние версии чего-то и выше> 1 000 объектов. выполнение нескольких миллионов файлов теперь. Однако его все еще не законченный после половины дня и никаких средств проверить в GUI AWS = /
# Set bucket name to clearout
BUCKET = 'bucket-to-clear'
import boto3
s3 = boto3.resource('s3')
bucket = s3.Bucket(BUCKET)
max_len = 1000 # max 1000 items at one req
chunk_counter = 0 # just to keep track
keys = [] # collect to delete
# clear files
def clearout():
global bucket
global chunk_counter
global keys
result = bucket.delete_objects(Delete=dict(Objects=keys))
if result["ResponseMetadata"]["HTTPStatusCode"] != 200:
print("Issue with response")
print(result)
chunk_counter += 1
keys = []
print(". {n} chunks so far".format(n=chunk_counter))
return
# start
for key in bucket.object_versions.all():
item = {'Key': key.object_key, 'VersionId': key.id}
keys.append(item)
if len(keys) >= max_len:
clearout()
# make sure last files are cleared as well
if len(keys) > 0:
clearout()
print("")
print("Done, {n} items deleted".format(n=chunk_counter*max_len))
#bucket.delete() #as per usual uncomment if you're sure!
TypeMock - это коммерческий продукт (то есть вам придется за него платить), но он позволяет имитировать конкретные объекты - в отличие от RhinoMocks / NUnit / MoQ, которые могут имитировать только интерфейс / абстрактный класс. . Как это достигается, это пограничная черная магия, но она делает некоторые очень умные вещи с CLR.
Это может быть особенно полезно, когда вы используете в своем проекте библиотеки, которые не используют много интерфейсов. Так, например, вы можете использовать TypeMock для имитации контекста данных LINQtoSQL или объектов Sharepoint. Однако, если вы используете TypeMock, это не оправдание плохого дизайна в вашем приложении .
Насколько мне известно, помимо незначительных различий в синтаксисе, большинство фреймворков имитатора отошли от старая модель записи / воспроизведения. Обычно
Видео под названием TDD - Understanding Mock Objects , написанное Роем Ошеровым, очень помогает в изучении различий между различными библиотеками имитаций. Он не раскрывает подробно все аспекты, но достаточно, чтобы вы поняли. Надеюсь, это поможет. Рой также является главным архитектором TypeMock и очень влиятельной фигурой на арене модульного тестирования. Я не могу порекомендовать это видео для тех, кто хочет научиться использовать имитацию, а также узнать о доступных библиотеках.
Основное различие между TypeMock и библиотекой с открытым исходным кодом заключается в том, что TypeMock использует API Profiler, предоставляемый Microsoft вместо динамического прокси . Это позволяет TypeMock имитировать конкретные классы и статические методы. Если вы не уверены, что такое профилировщик, это тот же API, который используется такими инструментами, как dotTrace JetBrain и профилировщики Ants .Net от RedGate. TypeMock просто использует API по-другому, чтобы подделать (имитировать) то, что вы ему рассказываете.
@RichardOD, спасибо за напоминание, его книга « Искусство модульного тестирования » более подробно описывает где видео нет. У меня есть книга, и она очень информативна.
У меня не было личного опыта с этими другими, но ...
Я все время использую TypeMock и считаю его очень мощным инструментом это может улучшить охват моих модульных тестов. Это потому, что я работаю с SharePoint, и только TypeMock может позволить мне имитировать классы SharePoint - поскольку они являются конкретными классами, а не интерфейсами.
Мокинг классов SharePoint невозможен с RhinoMock, Moq, NUNit и т. Д., Поскольку (я считаю) им нужны интерфейсы для имитации объектов, а не возможность имитировать фактические конкретные классы.
Если ваш код действительно использует много интерфейсов, а вы не используете его