我正在使用nosetests来测试连接MongoDB的Python代码,我已经使用了python mock标准库和mongoMock: https://github.com/vmalloc/mongomock , 我已经修补了pymongo.MongoClient模块以进行mock,但问题是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()
当我运行测试时,代码仍然在真实数据库中插入数据,并且代码打印出了实际的连接!请问这是什么问题,如何正确处理?
提前感谢!