#python-3.x #mocking #patch
Вопрос:
Я заинтересован в исправлении метода класса a под названием _validate в классе схемы и в замененном fn, используя значение cls и другие аргументы.
Для контекста ArrayHoldingAnyType наследуется от Schema, и _validate вызывается при создании экземпляра. Когда я пытаюсь сделать это с помощью приведенного ниже кода, значение для cls не является классом. Как исправить переменную cls?
def test_validate_called_n_times(self):
def replacement_validate(cls, *args):
# code which will return the correct values
with patch.object(Schema, '_validate', new=replacement_validate) as mock_validate:
path_to_schemas = ArrayHoldingAnyType(['a'])
# I will check that the mock was called a certain number of times here with specific inputs
Ответ №1:
Таким образом, проблема здесь заключалась в том, что декоратор метода классов отсутствовал в replacement_validate. Это исправляет ситуацию:
def test_validate_called_n_times(self):
@classmethod
def replacement_validate(cls, *args):
# code which will return the correct values
with patch.object(Schema, '_validate', new=replacement_validate) as mock_validate:
path_to_schemas = ArrayHoldingAnyType(['a'])
# I will check that the mock was called a certain number of times here with specific inputs
Комментарии:
1. Хм, теперь возникает проблема, при которой mock_validate.call_args_list не может быть проверен при использовании
new=replacement_validate
илиside_effect=replacement_validate