Здравствуйте, я довольно новичок в модульном тестировании, и поэтому у меня возникла большая проблема с unittest.mock. Мой проект состоит из разных модулей. Мой первый модуль - General:
general.py
def do_something(item, collection):
# some more code that i want to test
try:
collection.insert_one(item)
except:
print("did not work")
Мой второй модуль ist my_module.py
mymodule.py
import general
from pymongo import MongoClient
client = MongoClient("localhost", 27017)
db = client['db']
collection = db['col']
item =
{
"id": 1
}
def method:
general.do_something(item, collection)
Теперь я хочу протестировать метод do_something (item, collection) из general.py ипоэтому я хочу издеваться над collection.insert_one (item). Я не нашел возможного решения для этого. Я пробовал это с патчем, но моя проблема в том, что коллекция параметров (которая является коллекцией pymongo) является параметром, который вызывает функцию. Как теперь я могу смоделировать collection.insert_one?
Моя цель - извлечь collection.insert_one и установить в него MagicMock. И этот Magic Mock должен иметь возможность сбоя, чтобы проверить, работает ли исключающая часть, или не потерпеть крах, чтобы проверить, работает ли пробная часть.
TestGeneral.py
import unnittest
class TestGeneral(unittest.TestCase):
@patch()
def test_general():
Заранее спасибо! :)