Есть ли способ, чтобы unittest.mock не вызывал исключение, если оно возвращено побочным эффектом? - PullRequest
0 голосов
/ 24 марта 2020

Я пытаюсь высказать методы из библиотеки python -aran go. В частности, у меня возникли проблемы с методом update_many: https://python-driver-for-arangodb.readthedocs.io/en/master/specs.html#arango .collection.StandardCollection.update_many

Этот метод возвращает список элементов и / или экземпляров ошибок, если таковые имеются. из элементов не удалось обновить.

Итак, в моем тесте я смоделировал все до вызова update_many, и я установил side_effect для этого вызова, чтобы он возвращал генератор, который возвращает один элемент, который DocumentUpdateError, созданный так:

    mock = MagicMock()
    mock.__class__ = DocumentUpdateError
    mock.error_code = DOCUMENT_NOT_FOUND
    mock.request.data = [request_data]
    return mock

Это все работает, но моя проблема в том, что когда unittest.mock вызывает side_effect, он автоматически проверяет результат с помощью метода _is_exception (result) (unittest / mock.py). строка 1074), а затем выбрасывает результат, а не просто возвращает его. Хуже того, поскольку это на самом деле фиктивный объект, а не истинная ошибка, Python выдает ошибку типа:

TypeError: исключения должны происходить из BaseException

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...