#python-3.x #unit-testing #mocking
#python-3.x #модульное тестирование #издевательство
Вопрос:
Я хочу создать макет, используя create_autospec
из unittest.mock
модуля, а затем утверждать, что макет был вызван. Из чтения документации я понял, что вы можете имитировать экземпляр класса, передав объект класса как spec
в create_autospec
и установив instance
параметр в True
.
Когда я вызываю созданный макет, а затем пытаюсь утверждать, что мой макет был вызван, я получаю две ошибки (вторая ошибка вызвана первой):
TypeError: missing a required argument: 'self'
AssertionError: expected call not found.
Я ожидал, что мой код не вызовет никаких ошибок, потому что созданный макет должен вести себя как экземпляр вызываемого класса, и макет был вызван.
Может кто-нибудь объяснить мне, почему возникает эта ошибка и каков правильный способ сделать это?
Вот фрагмент кода, который воссоздает мою проблему:
from unittest.mock import create_autospec
class Thing:
def __call__(self, *args, **kwargs):
pass
thing_mock = create_autospec(Thing, instance=True)
thing_mock()
thing_mock.assert_called_once_with()