Python MongoDB MagicMock с модульным тестом Mongopatch для назначения клиента, базы данных и коллекцииPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Python MongoDB MagicMock с модульным тестом Mongopatch для назначения клиента, базы данных и коллекции

Сообщение Anonymous »

Я работаю с Python в системе Windows, новичок в Python и связанном с ним модульном тестировании, и мне нравится учиться!
Мне нужно покрытие модульными тестами для моего метода open_collection и я борюсь с
моим макетом MongoClient, последующим вызовом метода open_collection и получением ожидаемого имени результирующей коллекции. Я знаю, что, должно быть, упускаю что-то очень простое, и я много искал в Интернете и нашел много разных вещей, которые можно попробовать, но ни одна из них не соответствует моим точным требованиям.
Основная проблема заключается в следующем: после того, как я выполняю setattr обезьяньего патча с помощью MagicMock клиента и вызываю метод open_collection, передавая имя «test», имя объекта коллекции экземпляра:
"MagicMock name=' макет.getitem().getitem().name' id='2686909818128'>"
Этот пост — самый близкий мне дошли до моей проблемы, и я попробовал некоторые из упомянутых вещей, хотя сценарии не совсем соответствуют моим, но безуспешно:
https://adil.medium.com/how-to-fix -returning-magicmock-object-instead-of-return-value-b262cc76abdd
Я пробовал установить другие свойства/атрибуты в моем макете перед переходом к методу open_collection, но в нем ничего не представлено коллекция из мока после возврата из вызова метода open_collection. Даже return_value. Возвращаемое значение, которое я вижу в коллекции экземпляра:


Я ценю вашу помощь!
class Common():
collection = {}
data = {}

def open_collection(self, name):
if 'MONGO_URL' in os.environ:
db_name = "testDB"
client = MongoClient(os.environ['MONGO_URL'])
db_object = client[db_name]
self.collection = db_object[name]
else:
print("Environment variable MONGO_URL not set! Exiting.")
sys.exit(0)

И тест:
def test_open_collection(monkeypatch):
mock = MagicMock(return_value='rvTest')

monkeypatch.setattr('pymongo.MongoClient', lambda x: MagicMock(db=MagicMock(collection=lambda x: mock)))

_module = importlib.import_module(API_MODULE)
_instance = _module.Common()

_instance.open_collection("test")

assert _instance.collection.name == 'test'


Подробнее здесь: https://stackoverflow.com/questions/786 ... ent-db-and
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Издевательство над модульным тестом Python – динамическая оценка переменной модуля
    Anonymous » » в форуме Python
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Типизированный модульным тестом HttpClient с Microsoft.Extensions.Http.Resilience
    Anonymous » » в форуме C#
    0 Ответы
    29 Просмотры
    Последнее сообщение Anonymous
  • Почему мой код не удаляет zip-файл, созданный моим модульным тестом?
    Anonymous » » в форуме JAVA
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Почему мой код не удаляет zip-файл, созданный моим модульным тестом? [дубликат]
    Anonymous » » в форуме JAVA
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Что не так с этим модульным тестом?
    Anonymous » » в форуме Android
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»