我正在尝试了解这些mock/monkeypatch/pytest-mock
功能。
让我知道这是否可能。如果不能,请建议我如何测试此代码。
我的代码结构:
/
./app
../__init__.py
../some_module1
.../__init__.py
../some_module2
.../__init__.py
./tests
../test_db.py
这/app/__init__.py
是我的应用程序(如果有帮助的话是 Flask 应用程序)与初始化数据库连接对象到 MongoDB 数据库的地方:
# ...
def create_app():
# ...
return app
db_conn = DB()
some_module1
和some_module
导入对象并将其db_conn
用作其功能的一部分:
## some_module1/__init__.py
from app import db_conn
...
db = db_conn.db_name2.db_collection2
def some_func1():
data = db.find()
# check and do something with data
return boolean_result
...
## some_module2/__init__.py
from app import db_conn
...
db = db_conn.db_name1.db_collection1
def some_func2():
data = db.find()
# check and do something with data
return boolean_result
...
在我的测试中,我想根据从数据库接收到的数据来测试我的代码是否正常工作。我想模拟数据库,更具体地说是db_conn
对象,因为我不想使用真正的数据库(这将是设置环境和维护它的大量工作)。
关于如何模仿的任何建议db_conn
?
我一直在探索pytest-mock
,magicmock
但我不知道也不知道如何db_conn
在我的测试中模拟。