gpt4 book ai didi

python - 如何模拟 MongoClient 进行 python 单元测试?

转载 作者:行者123 更新时间:2023-12-03 15:59:06 28 4
gpt4 key购买 nike

我有以下一段代码到 UT,这让我遇到了麻烦:

  def initialize():
try :
self.client = MongoClient("127.0.0.1", 27017)
self.conn = self.client["DB_NAME"]
except Exception:
print "Except in initialize!"
return False
return True

我编写了以下测试用例来覆盖上述函数,希望得到返回值“True”:

def mock_mongodb_mongoclient_init(self, para1, para2):
pass

def mock_mongodb_mongoclient_getitem(self, name):
return {"DB_NAME":"Something"}

def test_mongodb_initialize_true(self):
self.patcher1 = patch('pymongo.MongoClient.__init__', new=self.mock_mongodb_mongoclient_init)
self.patcher2 = patch('pymongo.MongoClient.__getitem__', new=self.mock_mongodb_mongoclient_getitem)
self.patcher1.start()
self.patcher2.start()
self.assertEqual(initialize(), True)
self.patcher1.stop()
self.patcher2.stop()

但这永远行不通!总是报“初始化异常!”!并返回“False”。

我怎样才能UT这个MongoClient并使函数返回“True”?

最佳答案

由于您正在进行单元测试并且不尝试以任何方式实际连接到 Mongo,因此我认为您应该只关心客户端 API 已被调用。所以我建议如下 -

from unittest import mock
@mock.patch("pymongo.MongoClient")
def test_mongodb_initialize(self, mock_pymongo):
MyMongo.initialize()
self.assertTrue(mock_pymongo.called)

(如果我的语法不对,请原谅我,我使用 pytest 而不是 unittest。)

关于python - 如何模拟 MongoClient 进行 python 单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22037815/

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