[英]Python, Pymongo, Mock : Patching a pymongo collection
我正在嘗試使用mock.patch
修補pymongo collection
以進行測試。
因此,讓我們考慮以下兩個數據庫:第一個是生產代碼連接到的真實數據庫。 第二個僅用於測試目的。
from pymongo import MongoClient
mongo=MongoClient()
mongo.real_db.data.insert_many(
[{'index': i , 'value':1} for i in range 100])
mongo.test_db.data.insert_many(
[{'index': i , 'value':'test'} for i in range 100])
生產代碼中的函數執行以下操作:
def get_data():
print(list(mongo.real_db.data.find()))
我想在我的測試套件中修補該功能,以便它可以連接到測試數據庫。
我試過了
from mock import patch
@patch('__main__.mongo.real_db.data', new=mongo.test_db.data)
def test_get_data():
get_data()
test_get_data()
但是它仍然連接到實際的數據庫。 任何人都可以幫助如何通過測試之一正確修補實際數據庫?
patch.object
可以用作patch.object
對象的上下文管理器
def test_get_data():
with patch.object(mongo, 'real_db', new=db):
get_data()
或作為裝飾
@patch.object(mongo, 'real_db', new=db)
def test_get_data():
get_data()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.