gpt4 book ai didi

python - 用于 python 单元测试的模拟 mongoDB

转载 作者:可可西里 更新时间:2023-11-01 09:40:03 25 4
gpt4 key购买 nike

我正在使用 Python 代码的 nosetests 来测试带有 MongoDB 连接的代码,我已经将 python 模拟标准库与 mongoMock 一起使用:https://github.com/vmalloc/mongomock ,我已经修补了 pymongo.MongoClient 模块来模拟它,但问题是 mongoMock 对象没有替换实际对象,这意味着测试函数仍在使用实际的 mongoDB 连接。

这是实际的代码:

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()

当我运行测试时,代码仍在真实数据库中插入,并且代码打印实际连接!!请问,它有什么问题以及如何正确执行?

提前致谢!

最佳答案

我解决了这个问题,这对我来说很棘手,因为实际代码和测试代码都没有任何问题,只是模拟对象没有被实际调用,因为当我做 @mock.patch 时有人提到了这个模块@mock.patch'pymongo.MongoClient' 这就是我应该通过编写来创建连接的原因

connection = pymongo.MongoClient('mongodb://localhost:27017/').customers.review

而不是写

connection = MongoClient('mongodb://localhost:27017/').customers.review

关于python - 用于 python 单元测试的模拟 mongoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37393651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com