Python unittest изменяет значение подражательного патча на лету
У меня возникли проблемы при работе с патчами. Я использую mock из библиотеки unittest. При тестировании представления check_codes() я хотел бы установить другие значения в db.find_one()
api.utils.py
from pymongo import MongoClient
import os
def get_share_code_collection():
client = MongoClient(os.getenv("DB_HOST"))
db_handle = client[os.getenv("DB_NAME")]
return db_handle["share_codes"]
views.py
def check_codes(self, request):
db = get_share_code_collection()
data = db.find_one({"specialist_id": {"$exists": True}})
test_views.py
from unittest import mock
@mock.patch("api.utils.get_share_code_collection")
def test_share_code_correct_no_share_types(
self, mocked_collection, mocked_share_code, user_model
):
mocked_collection().find_one.return_value = True
...
@mock.patch("api.utils.get_share_code_collection")
def test_share_code_no_start_time(
self, mocked_collection, user_model
):
mocked_collection().find_one.return_value = False
...
Единственным обходным решением, которое я нашел, является установка
mocked_collection().find_one.side_effect = [True,False]
но после инициализации я не могу добавить значения. Как я могу решить эту проблему?