python mongoengine: mongomock drop_collection не работает должным образом
При использовании Mongomock, чтобы издеваться над MongoEngine, connection.drop_database()
метод не работает должным образом: в первый раз я использую его, он работает, как ожидалось, но во второй раз не работает вообще.
Следующий тест должен быть исчерпывающим объяснением.
import mongoengine as me
try:
import pytest
except:
pass
class DummyDoc(me.Document):
pass
def test_mongomock():
db_conn = me.connect(db='mongotest', host='mongomock://localhost')
db_conn.drop_database('mongotest')
dd = DummyDoc()
dd.save()
assert len(DummyDoc.objects()) == 1
dd = DummyDoc()
dd.save()
assert len(DummyDoc.objects()) == 2
# First drop_database works as expected!
db_conn.drop_database('mongotest')
assert len(DummyDoc.objects()) == 0
dd = DummyDoc()
dd.save()
assert len(DummyDoc.objects()) == 1
dd = DummyDoc()
dd.save()
assert len(DummyDoc.objects()) == 2
# Second drop_database does not work!!
db_conn.drop_database('mongotest')
assert len(DummyDoc.objects()) == 0
# Final part of Pytest output:
# # Second drop_database does not work!!
# db_conn.drop_database('mongotest')
# > assert len(DummyDoc.objects()) == 0 # E assert 2 == 0
# E + where 2 = len([<DummyDoc: DummyDoc object>, <DummyDoc: DummyDoc object>])
# E + where [<DummyDoc: DummyDoc object>, <DummyDoc: DummyDoc object>] = [<DummyDoc: DummyDoc object>, <DummyDoc: DummyDoc object>]()
# E + where [<DummyDoc: DummyDoc object>, <DummyDoc: DummyDoc object>] = DummyDoc.objects
if __name__ == '__main__':
test_mongomock()
Скрипт может быть запущен как простой скрипт на python3 или как pytest.