【发布时间】:2017-07-03 12:22:17
【问题描述】:
我正在使用 Python 2.7 的 mock 模块来模拟我的其他功能并使用
unittest 用于编写单元测试。
我想知道模拟 MongoDB 是否与使用模拟功能不同(mock.patch 正在调用的函数?)或者我需要为此目的使用另一个不同的包?
我认为我不想运行测试 mongodb 实例。我想要的只是一些速度数据并且能够调用pymongo 功能。我只是有点迷失在想有没有办法为模块(如pymongo)编写模拟,或者mock模块可以实现任何事情。
如果您能提供一个示例或教程,非常感谢。
要测试的代码
from pymongo import MongoClient
monog_url = 'mongodb://localhost:27017'
client = MongoClient(monog_url)
db = client.db
class Dao(object):
def __init__(self):
pass
def save(self, user):
db_doc = {
'name': user.name,
'email': user.email
}
db.users.save(db_doc)
def getbyname(self, user):
db_doc = {
'name': user.name,
}
return db.users.find(db_doc)
为了测试这个,我真的不希望测试 mongodb 启动并运行!而且,我想我不想模拟 db.userssave 和 db.users.find 因为我希望能够真正检索我保存的数据并确保它在数据库中。我认为我需要为记忆中的每个模型创建一些 fixtures 并与它们一起使用。只是我需要一个外部工具来执行此操作吗?
我正在考虑保留一些这样的假数据,只是不知道如何正确处理。
users = {
{'name' : 'Kelly', 'email' : 'kelly@gmail.com'},
{'name': 'Sam', 'email': 'sam@gmail.com'}
}
【问题讨论】:
-
您能否添加一些您想测试的示例代码作为提供建议的基础?
-
@KlausD。我在描述中添加了示例代码。
标签: python mongodb unit-testing mocking pymongo