我在x
包中有一个函数main.applications.handlers
from main.config import get_db
def x(company_name):
db = get_db('my_db')
apps = []
for x in company_db.applications.find():
print(x)
apps.append(x)
return apps
现在我想为此方法编写单元测试。
from unittest.mock import Mock,patch, MagicMock
@mock.patch('main.applications.handlers.get_db')
def test_show_applications_handler(self, mocked_db):
mocked_db.applications.find = MagicMock(return_value=[1,2,3])
apps = x('test_company') # apps should have [1,2,3] but its []
print(apps)
但company_db.applications.find()
中的main.applications.handlers
未返回任何内容。它应返回[1,2,3]
此代码可能有什么问题?
答案 0 :(得分:0)
假设}
是一个错字,应为company_db
,然后模拟db
的返回值,您可以这样做:
mocked_db.return_value.applications.find = MagicMock(return_value=[1,2,3])
find()
需要一个mocked_db
,因为用数据库名调用了return_value
。
您也可以放下get_db
并直接设置MagicMock
的{{1}}:
mocked_db.return_value.applications.find.return_value = [1, 2, 3]