Я пытаюсь понять возможности 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
в моем тесте.