Максимальная глубина рекурсии превышена при передаче magicmock в jsonpickle.encode () - PullRequest
0 голосов
/ 29 августа 2018

Юнит-тесты передают список объектов в метод. Метод использует jsonpickle.encode для объектов.

Хорошо, но что делать, когда модульное тестирование отправляет список максируемых объектов и сталкивается с бесконечной рекурсией?

Вот пример кода:

import jsonpickle
from mock.mock import MagicMock


class Foo(object):
    def __init__(self):
        pass


def encodeFoos(list_of_foos):
    [jsonpickle.encode(x) for x in list_of_foos]


def works():
    list_of_foos = [Foo()]
    encodeFoos(list_of_foos=list_of_foos)


def unit_test_doesnt_work():
    list_of_mock_foos = [MagicMock()]
    encodeFoos(list_of_mock_foos)

unit_test_doesnt_work()

Выдается ошибка: RuntimeError: превышена максимальная глубина рекурсии поскольку jsonpickle, по-видимому, путешествует по бесконечному дереву в осмеянном объекте.

как я могу сохранить производственный код как есть (encodeFoos) и не допустить максимальной рекурсии при передаче фиктивных объектов?

Спасибо!

...