与这个 问题类似,我试图模拟连接到 MongoDB 以进行单元测试。所有这些需要模拟的是从数据库中读取数据。下面是我的代码的简化版本。
如何模拟可以测试 MongoAccess 类的数据库?
mongo_stuff.py
Class MongoAccess():
def __init__(self, configuration: dict):
self.configuration = configuration
def _connect():
self.db = configuration['Database']
def access_data():
_connect()
cursor = self.db.find(configuration['something'])
return cursor
def parse():
cursor = self.access_data()
for i in cursor:
#parse and format data into wanted output
return data
某处_else.py
import from mongo_stuff import MongoAccess
db = MongoAccess(configuration)
data = db.parse()
# do stuff with data
关于 mongomock 的文档不多,这是我能找到的唯一示例,但它依赖于在装饰器中列出的服务器信息。
@mongomock.patch(servers=(('server.example.com', 27017),))
def test_increate_votes_endpoint():
objects = [dict(votes=1), dict(votes=2), ...]
client = pymongo.MongoClient('server.example.com')
client.db.collection.insert_many(objects)
call_endpoint('/votes')
... verify client.db.collection