我想用 pytest 测试我的 tornado python 应用程序。
为此,我想为 mongo 提供一个模拟数据库,并使用电机“假”客户端来模拟对 mongodb 的调用。
我找到了很多 pymongo 的解决方案,但不是motor。
任何想法?
我想用 pytest 测试我的 tornado python 应用程序。
为此,我想为 mongo 提供一个模拟数据库,并使用电机“假”客户端来模拟对 mongodb 的调用。
我找到了很多 pymongo 的解决方案,但不是motor。
任何想法?
我不清楚你的问题——为什么不只使用硬编码的 JSON 数据?如果您只想拥有一个可以模拟以下内容的课程:
from motor.motor_tornado import MotorClient
client = MotorClient(MONGODB_URL)
my_db = client.my_db
result = await my_db['my_collection'].insert_one(my_json_load)
所以我建议创建一个类:
Class Collection():
database = []
async def insert_one(self,data):
database.append(data)
data['_id'] = "5063114bd386d8fadbd6b004" ## You may make it random or consequent
...
## Also, you may save the 'database' list to the pickle on disk to preserve data between runs
return data
async def find_one(self, data):
## Search in the list
return data
async def delete_one(self, data_id):
delete_one.deleted_count = 1
return
## Then create a collection:
my_db = {}
my_db['my_collecton'] = Collection()
### The following is the part of 'views.py'
from tornado.web import RequestHandler, authenticated
from tornado.escape import xhtml_escape
class UserHandler(RequestHandler):
async def post(self, name):
getusername = xhtml_escape(self.get_argument("user_variable"))
my_json_load = {'username':getusername}
result = await my_db['my_collection'].insert_one(my_json_load)
...
return self.write(result)
如果你能澄清你的问题,我会制定我的答案。