簡體   English   中英

使用模擬MongoDB服務器進行單元測試

[英]Use mock MongoDB server for unit test

我必須使用MongoDB存儲為Python代碼實現nosetests。 是否有任何python庫允許我初始化一個模擬內存中的MongoDB服務器?

我正在使用持續集成。 所以,我希望我的測試獨立於任何運行MongoDB的服務器。 有沒有辦法在內存中模擬mongoDM Server來獨立於連接到Mongo服務器來測試代碼?

提前致謝!

您可以嘗試: https//github.com/vmalloc/mongomock ,其目的是成為一個小型庫,用於模擬pymongo集合對象以進行測試。

但是,與確保某些模擬庫功能完整相比,我不確定運行mongodb的成本是否會過高。

我不知道Python,但我對C#有類似的擔憂。 我決定在我的工作站上運行一個真實的Mongo實例,指向一個空目錄。 這並不好,因為代碼不是孤立的,而是快速而簡單的。

在測試期間,只有數據訪問層實際上調用了Mongo。 其余的可以依賴於數據訪問層的模擬。 我不覺得偽裝Mongo值得付出努力,我真的想驗證與Mongo的交互是否正確無論如何。

您可以使用其中有一個內存蒙戈DB pymongo連接更換。

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

我也在使用pymongoMockupDB非常適合我的目的(集成測試)。

使用它很簡單:

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的官方教程

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM