2
我使用nosetests的Python代碼來測試與MongoDB連接的代碼,我已經用mongoMock python模擬標準庫:https://github.com/vmalloc/mongomock,我修補了pymongo.MongoClient模塊來模擬它,但問題是mongoMock對象不替代實際的對象,這意味着測試功能依然採用實際的MongoDB連接。模擬mongoDB python單元測試
這是實際的代碼:
def post_data():
connection = MongoClient('mongodb://localhost:27017/').customers.review
post = {"author": "Mike",
"text": "My first blog post!",
"tags": ["mongodb", "python", "pymongo"],
"votes":1}
print connection
connection.insert_one(post)
測試功能:
@mock.patch('pymongo.MongoClient')
def test_post_data(mock_MongoClient):
mock_MongoClient.return_value= mongomock.MongoClient().db.collection
post_data()
當我運行測試的代碼纔是真正的數據庫上仍然插入和代碼打印的實際連接! ! 請,有什麼不妥之處,如何正確地做到這一點?
在此先感謝!