Как я могу смоделировать атрибут объекта в pytest с помощью pytest-mock? - PullRequest
0 голосов
/ 09 ноября 2018

Я хочу смоделировать объект, производный от некоторого класса, я пробую приведенный ниже код, но получаю ошибку времени выполнения maximum recursion depth exceeded. Я полагаю, что я не исправил средство получения атрибутов разумным образом и привел к мертвому циклу.

Как я могу только издеваться над данным атрибутом этого класса?

Есть ли разница между классом A.__getattribute__ и объектом a.__getattribute__?

class A(object):
    def __init__(self, val):
        self.val = val

    def get_val(self):
        return self.val


def test_A_val(mocker):
    a = A(True)
    assert a.get_val()
    mocker.patch.object(A, 'get_val', lambda x: False)
    mocker.patch(__name__ + '.A.__getattribute__', wraps=lambda x: False if x == 'val' else getattr(A, x))
    a = A(True)
    assert not a.get_val()
    assert not a.val
    assert a.get_val()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...