PyTest检测是否调用了外部作用域的方法

时间:2019-01-16 08:46:57

标签: python-3.x mocking pytest

我有以下代码和测试,现在想“间谍”一次外部检索是否真的被调用过。我该怎么办?

代码

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,
        )

测试

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'

0 个答案:

没有答案