簡體   English   中英

Python,Pymongo,Mock:修補pymongo集合

[英]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.

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