Python 获取Mongoengine的实际DB状态以进行单元测试

Python 获取Mongoengine的实际DB状态以进行单元测试,python,mongodb,unit-testing,mongoengine,Python,Mongodb,Unit Testing,Mongoengine,我有一个单元测试,测试帖子的注释是否正确添加到MongoDB数据库。有一个集合Post,其中包含名为comments的字符串Post是一个继承自MongoEngine的类,它具有自定义方法create和add\u comment class TestNotSaving(TestCase): def setUp(self): Post.create(text='sample post') def tearDown(self): # Post.dro

我有一个单元测试,测试帖子的注释是否正确添加到MongoDB数据库。有一个集合
Post
,其中包含名为
comments
的字符串
Post
是一个继承自MongoEngine的类,它具有自定义方法
create
add\u comment

class TestNotSaving(TestCase):
    def setUp(self):
        Post.create(text='sample post')

    def tearDown(self):
        # Post.drop_collection()
        pass

    def test_comments(self):
        comment = 'This is a sample comment.'
        post = Post.objects[0]
        post.add_comment(comment)
        # post.save()
        self.assertEqual(post.comments[0], comment)

问题是,如果我不使用方法将文档保存到DB,MongoEngine的行为仍然与创建文档和存储注释一样。一、 但是,如果您没有将文档正确地保存在代码中,您希望编写一个失败的测试。如何刷新MongoEngine文档的状态?

如果不尝试从数据库加载数据以确保其已保存,则无法真正实现这一点

save
中的MongoEngine会检查是否存在
\u id
self.\u已创建
,但它知道如何尝试执行插入或向上插入。但是,只有保存并与数据库对话,才能让您知道它是成功的,并且没有违反任何唯一索引

但是,您可以使用
insert
和/或
update
将数据持久化到数据库中(这比使用
save
更明确,后者在封面下使用数据)