PyTest определяет, был ли вызван метод внешней области видимости - PullRequest
0 голосов
/ 16 января 2019

У меня есть следующий код и проверка, и теперь я хочу «шпионить», если внешний извлечение действительно вызывается один раз. Как я могу это сделать?

код

class AbstractExternal(metaclass=ABCMeta):

        @abstractmethod
        def retrieve(self, user):
            pass

class Do:

    def __init__(self, func):
        self.external = func

    def get_name(self, username):
        user = self.external.retrieve(username)
        return '{} {}'.format(
            user.first_name,
            user.second_name,
        )

Test

def test_get_name(monkeypatch):
    monkeypatch.setattr(AbstractExternal, 'retrieve', lambda self: SimpleNamespace(
        attributes={
            'first_name': 'given_name',
            'second_name': 'family_name',
        }
    ))

    do = Do(AbstractExternal)
    data = do.get_name('Egon')

    assert data == 'given_name family_name'
...