我必须使用 MongoDB 存储实现 Python 代码的鼻子测试。是否有任何允许我初始化模拟内存 MongoDB 服务器的 python 库?
我正在使用持续集成。所以,我希望我的测试独立于任何运行 MongoDB 的服务器。有没有办法在内存中模拟 mongoDM 服务器以独立于连接到 Mongo 服务器来测试代码?
提前致谢!
我必须使用 MongoDB 存储实现 Python 代码的鼻子测试。是否有任何允许我初始化模拟内存 MongoDB 服务器的 python 库?
我正在使用持续集成。所以,我希望我的测试独立于任何运行 MongoDB 的服务器。有没有办法在内存中模拟 mongoDM 服务器以独立于连接到 Mongo 服务器来测试代码?
提前致谢!
您可以尝试:https ://github.com/vmalloc/mongomock ,它旨在成为一个小型库,用于模拟 pymongo 集合对象以进行测试。
但是,与确保某些模拟库功能完整相比,我不确定仅运行 mongodb 的成本是否过高。
我不了解 Python,但我对 C# 也有类似的担忧。我决定在我的工作站上运行一个真实的 Mongo 实例,指向一个空目录。这不是很好,因为代码不是孤立的,但它又快又容易。
只有数据访问层在测试过程中真正调用了 Mongo。其余的可以依赖于数据访问层的模拟。当我真的想验证与 Mongo 的交互是否正确时,我不觉得伪装 Mongo 值得付出努力。
您可以使用具有内存中 mongo db pymongo 连接替换的 Ming 。
import ming
mg = ming.create_datastore('mim://')
mg.conn # is the connection
mg.db # is a db with no name
mg.conn.somedb.somecol
# >> mim.Collection(mim.Database(somedb), somecol)
col = mg.conn.somedb.somecol
col.insert({'a': 1})
# >> ObjectId('5216ac3fe0323a1218f4e9aa')
col.find().count()
# >> 1
我也在使用pymongo并且MockupDB对于我的目的(集成测试)运行良好。
使用它很简单:
from mockupdb import *
server = MockupDB()
port = server.run()
from pymongo import MongoClient
client = MongoClient(server.uri)
import module_i_want_to_patch
module_i_want_to_patch.client = client
您可以在此处查看 MockupDB 的官方教程