我有以下一段代碼UT,這使我陷入困境:如何模擬MongoClient for python單元測試?
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
我寫下面的測試案例,以補足上述的功能,希望能得到返回值「真」:
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()
但是這從來不行!它總是報告「初始化異常!」!並返回「假」。
我怎麼能UT這個MongoClient,並使該函數返回「真」?
包括''在traceback.print_exc()你除了塊以查看更多信息關於失敗。 – pbacterio
當回溯異常時,打印如下內容:return database.Database(self,name) 文件「C:\ Python27 \ lib \ site-packages \ pymongo-2.6.3-py2.7-win32.egg \ pymongo \ c on.py「,第435行,在__get_slave_okay中 返回self .__ slave_okay RuntimeError:調用Python對象時超出最大遞歸深度 – user992570
您使用的是什麼模擬庫? – pbacterio